以下のコードを使用して、matplotlib を使用して棒グラフを作成しています。データの最初または最後の列が 0 の場合、最初の列は Y 軸に対してウェッジされます。
これの例。最初の列は x=0 ポイント上にあることに注意してください。
この列にデータがある場合、ここに示すように、Y 軸と最初の列の間に大きなパディングが表示されます。X=0 にある追加のバーに注意してください。最後の列にもデータがある場合、この効果が繰り返されます。
私のコードは次のとおりです。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MultipleLocator
binVals = [0,5531608,6475325,1311915,223000,609638,291151,449434,1398731,2516755,3035532,2976924,2695079,1822865,1347155,304911,3562,157,5,0,0,0,0,0,0,0,0]
binTot = sum(binVals)
binNorm = []
for v in range(len(binVals)):
binNorm.append(float(binVals[v])/binTot)
fig = plt.figure(figsize=(6,4))
ax1 = fig.add_subplot(1,1,1)
ax1.bar(range(len(binNorm)),binNorm,align='center', label='Values')
plt.legend(loc=1)
plt.title("Demo Histogram")
plt.xlabel("Value")
plt.xticks(range(len(binLabels)),binLabels,rotation='vertical')
plt.grid(b=True, which='major', color='grey', linestyle='--', alpha=0.35)
ax1.xaxis.grid(False)
plt.ylabel("% of Count")
plt.subplots_adjust(bottom=0.15)
plt.tight_layout()
plt.show()
Y 軸と最初/最後のバーの間に一定のマージンを設定するにはどうすればよいですか?
さらに、「デモ ヒストグラム」というラベルが付けられていることに気付きました。これは、ここで説明した問題を修正するときに見逃したためです。