解决 python plt画柱状图(棒状图)时横坐标刻度线不在中间而在右边

python学习笔记 同时被 2 个专栏收录
96 篇文章 1 订阅
10 篇文章 0 订阅
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()

在这里插入图片描述

©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值