5

次のスクリプトを検討してください。

import pylab
counts = [0,0,0,125,56,0,0,0,34,77,123,0,0,0]
pylab.bar(*zip(*enumerate(counts)), align='center')
pylab.show()

これを実行すると、次の画像が表示されます。 棒グラフ

ご覧のとおり、プロットの端にある高さ 0 のビンはプロットされていません。しかし、私はそれらが実際にプロットされることを望んでいます。これを達成するために何ができますか?

軸の x_lim を設定できることはわかっています ( Axes.set_xlim)。他に選択肢がない場合、バーの幅を最もエレガントに考慮に入れる方法はどれですか?

4

2 に答える 2

6

1 つの方法は、次のようなものです。

import pylab
counts = [0,0,0,125,56,0,0,0,34,77,123,0,0,0]
artists = pylab.bar(*zip(*enumerate(counts)), align='center')

lefts = [item.get_x() for item in artists]
rights = [item.get_x() + item.get_width() for item in artists]
pylab.xlim([min(lefts), max(rights)])

pylab.show()

ここに画像の説明を入力

于 2012-04-18T14:39:01.783 に答える
5

よりも確実に機能する可能性のある別のソリューションを見つけましたset_xlim:

import pylab
counts = [0,0,0,125,56,0,0,0,34,77,123,0,0,0]
# add a epsilon to counts to force bins to be plotted
epsilon = 1e-7
counts = [x+epsilon for x in counts]
pylab.bar(*zip(*enumerate(counts)), align='center')
pylab.show()

棒グラフ

于 2012-04-18T14:41:09.850 に答える