Python 导出包含完整数据的打印或另存为脚本

Python 导出包含完整数据的打印或另存为脚本,python,python-3.x,export,matplotlib,graphing,Python,Python 3.x,Export,Matplotlib,Graphing,我使用python和matplotlib来创建数据绘图,我希望将此绘图保存在pdf文件中(但我也可以使用更具体的格式)。 我基本上使用了以下说明: plt.plot(data) figname = ''.join([filename, '_', label, '.pdf']) plt.savefig(figname) 但它所做的是创建一个带有放大显示的绘图图像;我想创建一个副本,显示我正在打印的所有点(>10000),以便能够缩放到任何级别。 哪种方法正确 编辑:是否有一种格式(例如用于Mat

我使用python和matplotlib来创建数据绘图,我希望将此绘图保存在pdf文件中(但我也可以使用更具体的格式)。 我基本上使用了以下说明:

plt.plot(data)
figname = ''.join([filename, '_', label, '.pdf'])
plt.savefig(figname)
但它所做的是创建一个带有放大显示的绘图图像;我想创建一个副本,显示我正在打印的所有点(>10000),以便能够缩放到任何级别。 哪种方法正确

编辑:是否有一种格式(例如用于Matlab的“.fig”)可以使用我保存的数据直接调用Matplotlib的查看器? 也许可以创建一个.py脚本来保存这些点,我可以调用它来快速重新显示它们?我认为这就是.fig Matlab文件所做的


使用
plt.xlim
plt.ylim
设置域和范围。 设置
figsize
间接控制最终图像的像素分辨率。(
figsize
以英寸为单位设置图形的大小;默认dpi为100。) 您还可以在调用
plt.savefig
中控制
dpi

使用
figsize=(10,10)
dpi=100
,图像将具有分辨率
1000x1000


比如说,

import matplotlib.pyplot as plt
import numpy as np

x, y = np.random.random((2,10000))
plt.plot(x, y, ',')
figname = '/tmp/test.pdf'
xmin, xmax = 0, 1
ymin, ymax = 0, 1
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
plt.savefig(figname)

您的pdf查看器应该能够放大任何区域,以便能够区分各个点。

我不知道任何包含您的数据的原生Matplotlib文件格式;事实上,我不确定Matploblib对象是否定义了写函数

相反,我所做的是模拟Matlab.fig概念,保存处理后的数据(作为numpy数组或pickle),并运行单独的.py脚本来重新创建Matplotlib图

因此,分步骤:

  • 处理你的数据,绘制一些漂亮的曲线图,直到你完全满意为止
  • 尽可能靠近plot命令保存/pickle处理后的数据(如果制作直方图需要很长时间,您甚至可能希望将数据存储到直方图中)
  • 编写一个新脚本,在其中导入数据并从原始脚本复制/粘贴打印命令
  • 这有点笨拙,但它可以工作。如果确实需要,可以将pickle数据作为字符串嵌入到绘图脚本()中。这使您能够使用包含数据和绘图代码的单个python脚本

    编辑 您可以检查存储的已处理数据文件是否存在,如果该文件存在,则跳过处理步骤。因此:

    if not processed_data.file exists:
       my_data = process_raw_data()
    else:
       my_data = read_data_from_file(processed_data.file)
    
    plot(my_data)
    
    通过这种方式,您可以有一个脚本,用于首先创建图形,然后使用预处理的数据重新绘制图形


    您可能需要添加一个运行时参数,以强制重新处理数据,以防您对处理脚本进行了更改,并且不希望手动删除已处理的数据文件。

    '%s\u%s.pdf'(文件名,标签)
    我使用该方法,因为标签通常是字符串列表,这取决于我在同一张图中绘制了多少条曲线谢谢你告诉我xlim和ylim,我也在寻找:)但我需要的是以允许我看到单个点的分辨率保存绘图的可能性。使用此实现,我只有绘图的形状,但绘图的实际分辨率丢失。您可以通过设置
    figsize
    和/或
    dpi
    参数来控制分辨率。我编辑了我的答案来说明我的意思。我认为这没什么区别,因为我是用矢量格式(pdf)绘图的;我想保存的不仅仅是一张简单的图片,还有(对不起,我还是python新手)我可以从另一个脚本中创建一个python脚本,我可以称之为双击吗?因为我必须对许多文件执行此操作,每次创建脚本都需要花费太多的时间。也许有一个函数可以在文件中存储变量(列表)和一个用于恢复它的函数,并保持相同的结构?我知道如何使用.csv文件,但没有比这更简单的方法了?嗯,有“pickle”的概念,或者如果你有numpy数组,你可以使用numpy.save。同样,您可以保存和加载Matlab变量。不知道你说的“因为我必须为许多文件这样做”是什么意思;对于不同的输入数据,是同一个脚本,还是有数百个不同的脚本创建不同的图形,没有共同的元素?是的,我认为是后者:我有许多数据集,我必须创建它们的多个绘图,因此如果有一种方法可以直接创建这些脚本,这将是伟大的。使用一个脚本,并检查是否存在已处理的数据(请参阅上面的编辑)