我有不同长度的时间序列数据(信号),我希望在没有任何刻度和信号之间的边距的情况下进行绘制。Python/matplotlib:打印到分辨率并且没有空白/边框/边距
目标:绘制每个信号,因此(物理)打印的图将显示每个单一数据点。该情节应保存到文件中。
考虑:
- 打印机具有600 dpi的最大打印分辨率。
- 具有不同数据点数(从30000到100000)的信号。信号的
例如:
import numpy as np
Fs = 512
# Create random signal
np.random.seed(1)
data = [np.random.uniform(-10000, 20000) for i in range(5*Fs)]
如果我只是matplotlib绘制它:
import matplotlib.pyplot as plt
plt.figure(figsize=(len(data)/600,2)) # divide by 600 which is dpi resolution of printer
plt.plot(data, color = "black", linewidth = 1.0)
plt.show()
我不想第一个数据点之间的任何空白和Y轴或最后一个数据点和右边界之间。 Y轴的标签也不应该干扰图的大小,所以它的宽度也应该被考虑。
我该如何完成打印每一个点?
除去白色空间设置'plt.xlim([...])'和'plt.ylim([...])'完全匹配您的数据。如果你真的想要打印每一个点,你可能应该以矢量图形格式保存绘图,然后打印足够大。首先,我不明白你为什么要这样做。其次,我认为你永远无法确定,你的打印机驱动程序及其软件可能也会影响实际打印的内容。 –
作为上述评论的替代,'plt.margins(0,0)'去除自动边距 – DavidG
我不确定'边距'是否可以解决这个问题(可能只是其中的一部分)。另一方面,它完全不清楚“打印每一个点”意味着你是否有100000分。如果你有100000分600 dpi = 166英寸= 4.20米。没有4米的纸张。所以从这个意义上说,我仍然认为这个问题是不可回答的。 – ImportanceOfBeingErnest