plt 棒状图(柱状图)减小柱子间距

背景

        画图的的时候发现两哥柱子之间的间隔太大,不好看

在这里插入图片描述

解决办法

rects1 = plt.bar(x=xx, height=mean1, width=0.6, alpha=0.8,align='edge', color='blue')

        这个宽度是由 width 决定的 ,调整width 的大小即可,比如,我这儿的横坐标是range(0,5),所以 width 设置成1那就把地方都占满了,也就是柱子之间没空隙
在这里插入图片描述

        width 等于0.8的时候

在这里插入图片描述

        当然,如果你设定的x是 range(0,10,2),那可能要 width =2.0 才是无空隙

        我最后设置的是 width 等于0.6,得到一个较好的效果
在这里插入图片描述

附加

        在这个过程中涉及到重设图窗的大小,主要用到如下代码

params = {
    'figure.figsize': '5, 5'
}
plt.rcParams.update(params)

        目的是通过等比例放大(缩小)图窗让我的图更好看,更切合,不突兀

完整代码

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)
plt.show()
posted on 2021-06-09 19:07  雾恋过往  阅读(1863)  评论(0编辑  收藏  举报

Live2D