我正在使用带有matplotlib的python来创建数据图,我想将这些图保存在pdf文件中(但我也可以使用更具体的格式)。 我基本上都在使用这个说明:
plt.plot(data)
figname = ''.join([filename, '_', label, '.pdf'])
plt.savefig(figname)
但这样做的是用缩放图创建一个情节图像;我想创建一个副本,显示我正在绘制的所有点(> 10000),这样我就可以缩放到任何级别。 这是正确的方法吗?
编辑:是否有一种格式(例如Matlab的'.fig')直接使用我保存的数据调用Matplotlib的查看器? 也许有可能创建一个.py脚本来保存点数,我可以调用它来快速重新显示它们?我认为这是由.fig Matlab文件完成的。
答案 0 :(得分:1)
使用plt.xlim
和plt.ylim
设置域名和范围。
设置figsize
以间接控制最终图像的像素分辨率。 (figsize
以英寸为单位设置图形的大小;默认dpi为100.)
您还可以在dpi
的调用中控制plt.savefig
。
使用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查看器应该能够放大任何区域,以便区分各个点。
答案 1 :(得分:1)
我不知道包含您数据的任何原生Matplotlib文件格式;事实上,我不确定Matploblib对象是否定义了写函数。
我做的是模拟Matlab .fig的概念是保存处理过的数据(作为一个numpy数组,或者腌制)并运行一个单独的.py脚本来重新创建Matplotlib图。
所以步骤:
它有点笨拙,但它有效。如果您真的想要,可以将腌制数据作为字符串嵌入绘图脚本(Embed pickle (or arbitrary) data in python script)中。这使您可以使用包含数据和绘图代码的单个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)
通过这种方式,您可以首先创建一个脚本,然后使用预处理数据重新绘制图形。
如果您将某些内容更改为处理脚本并且不想手动删除已处理的数据文件,则可能需要添加运行时参数以强制重新处理数据。