私はスケールと信号の間に余白を入れずにプロットしたい異なる長さの時系列データ(信号)を持っています。Python/matplotlib:解像度と空白/枠/余白なしで印刷
目標:各信号をプロットすると、プロットの(物理的な)印刷にすべてのデータポイントが表示されます。プロットはファイルに保存されます。
考える:600dpiの最大印刷解像度と
- プリンタ。
- 異なるデータポイント数(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軸のラベルも、プロットのサイズに影響しないようにする必要があります。その幅も考慮する必要があります。
1点ごとに印刷するにはどうすればよいですか?
'plt.xlim([...])'と 'plt.ylim([...])'正確にあなたのデータと一致するように設定されたホワイトスペースを削除します。すべての点を実際に印刷したい場合は、プロットをベクトルグラフィックス形式で保存してから、十分に印刷してください。まず、なぜあなたがこれを望んでいるのか本当に分かりません。第二に、私はあなたがあなたのプリンタのドライバとそのソフトウェアが実際に印刷されるものに影響するかもしれないと確信できるとは思わない。 –
上記のコメントの代わりに、自動余白を削除するための 'plt.margins(0,0)' – DavidG
'marginins'がこの問題(おそらくその一部のみ)を解決するかどうかはわかりません。一方、「1点1点印刷」とは、あなたが100000点を持っていることを意味します。 100000ポイントを600dpi = 166インチ= 4.20メートルに分けた場合4メートルを測定する紙はありません。そういう意味で私はまだこの質問に答えることはできないと思います。 – ImportanceOfBeingErnest