1. X-ticklabels が機能しない
Matplotlib を使用して、いくつかの測定値からヒストグラムを生成しています。
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as pyplot
...
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1,)
n, bins, patches = ax.hist(measurements, bins=50, range=(graph_minimum, graph_maximum), histtype='bar')
ax.set_xticklabels([n], rotation='vertical')
for patch in patches:
patch.set_facecolor('r')
pyplot.title='Foobar'
#pyplot.grid(True)
pyplot.xlabel('X-Axis')
pyplot.ylabel('Y-Axis')
pyplot.savefig(output_filename)
2 つの問題を除いて、結果として得られる PNG は適切に見えます。
- タイトル (「Spam and Ham」) が PNG にありません。x 軸と y 軸のラベルは両方とも存在します (ただし、以下のサンプルではオンにしませんでした)。
- x-tick-lables は完全に壊れているように見えます。すべてのバーの下に沿って表示されるのではなく、グラフの左下の下に 1 行の数字としてレンダリングされ、切り取られています。また、Y 軸のラベルが無効になっているようです。
2. 単位と SI プレフィックス
注意: Matplotlib 固有ではありません。
ヒストグラムには、x 軸に沿った時間測定値があります。これらは、マイクロ秒の範囲からミリ秒および秒の範囲までの範囲です。現時点では、グラフは x 軸のラベルを標準表記の秒としてレンダリングしています。
わかりやすい形式にしたいのですが、時間をミリ秒/マイクロ秒の値で指定し、単位を表示します。つまり、SIプレフィックスを認識して、時間値をわかりやすい形式にしたいということです。
実際、これはおそらく次のサンプル プログラムと非常によく似ています。
http://diveintopython3.org/your-first-python-program.html
ユニットを処理する Python ライブラリがいくつかあることに気付きました。
- http://juanreyero.com/open/magnitude/index.html
- http://home.scarlet.be/be052320/Unum.html
- http://pypi.python.org/pypi/units/
ただし、私が読んだことから、上記のいずれも SI 接頭辞を処理したり、この種のわかりやすい書式設定を行ったりしていないようです。提案/代替案はありますか?