【问题标题】:Bar chart with Matplotlib gives excessive bar widthMatplotlib 条形图给出了过多的条形宽度
【发布时间】:2021-02-01 16:30:23
【问题描述】:

我是 Matplotlib 的新手,我正在尝试使用下面的代码绘制一个简单的条形图

import matplotlib.pyplot as plt

X = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
y = [0.0, 0.0, 0.0, 0.0, 0.8, 0.2, 0.0, 0.0, 0.0, 0.0]
plt.bar(X, y, align='edge', width = 0.8, edgecolor='black')
plt.xticks(X)
plt.show()

我不知道为什么我会得到这样的图表。任何人都可以帮我吗?谢谢。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    Matplotlib 完全按照说明进行操作 - 从 x=0.4 开始绘制一个高度为 0.8 和宽度为 0.8 的条形图(因此占用空间直到 x=1.2)和一个高度为 0.2 的条形图,从 x=0.5 开始并范围为 x =1.3

    这看起来很奇怪,因为 0.8 的宽度超出了您的比例:您的数据范围为 0-1,而 0.8 占据了其中的 80%,从而导致水平拉伸条形。将条形宽度设置为 0.1 会产生更美观的结果

    【讨论】:

    • 谢谢!您是否建议当条形的 x 坐标是数字时,我应该考虑比例?似乎如果我将 X 设置为字符串数组,matplotlib 会自动调整图形。
    • 对于 x 轴上的字符串标签,matplotlib 会将它们映射到沿X[0] -> 0, X[1] -> 1, X[2] -> 2 等行的数值,并从那里使用 0.8 的默认宽度(在该比例上很好地分隔条)