解決 python plt畫柱狀圖(棒狀圖)時橫坐標刻度線不在中間而在右邊


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()

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM