解決 python plt畫柱狀圖(棒狀圖)時橫座標刻度線不在中間而在右邊
阿新 • • 發佈:2021-06-10
mean1,mean2,mean3=avgSlove(X,y) label_list = ['色調', '紅色均值', '相對紅色分量', '粗度','高頻能量'] # 橫座標刻度顯示值 xx = range(len(label_list)) rects1 = plt.bar(x=xx, height=mean1, width=0.4, alpha=0.8, color='blue') plt.ylim(0, 1) # y軸取值範圍 plt.ylabel("歸一化後的值") plt.xticks([index + 0.2 for index in xx], label_list) plt.xlabel("特徵") plt.show()
以上程式碼的效果如下,可以看到橫座標刻度線不在柱狀圖的中間而在右邊,這樣的美觀性不好看
查閱官網 matplotlib 的 bar 函式引數後,解決了此問題。
解決辦法
bar 函式中 align
引數預設為 center
只要新增 align='edge',
然後設定 xticks 的時候加上柱狀圖寬度的一半即可
mean1,mean2,mean3=avgSlove(X,y) plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤 plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號 label_list = ['色調', '紅色均值', '相對紅色分量', '粗度','高頻能量'] # 橫座標刻度顯示值 print(len(label_list)) xx = range(len(label_list)) '''調整圖窗大小''' params = { 'figure.figsize': '5, 5' } plt.rcParams.update(params) '''調整圖窗大小''' rects1 = plt.bar(x=xx, height=mean1, width=0.6, alpha=0.8,align='edge', color='blue') plt.ylim(0, 1) # y軸取值範圍 plt.ylabel("歸一化後的值") plt.xticks([index + 0.3 for index in xx], label_list) #這兒的0.3是配合寬度0.6來的,是他的一半,目的是讓刻度線在柱子的中間 plt.xlabel("特徵",labelpad=8.5) # labelpad 是設定標籤離座標軸的距離 plt.show()