matplotlib 对浮点值使用条形图的意外行为

Unexpected behavior from matplotlib using bar plots for floating values

我的代码:

import matplotlib.pyplot as plt
a = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
b = [8.8913, 3.9714, 2.3416, 1.5099, 1.0078, 0.6577, 0.4198, 0.2523, 0.1141]
plt.bar(a,b)
plt.show()

我在此代码中找不到问题,但此输出的图表未显示真实值。

输出:

有几个错误,例如,x 轴应该有 0.1,0.2,0.3.,.. 但它从 -0.3 开始?同样对于 0.2,高度应该在 3.9 左右,但这里是 8 左右?

问题:我哪里出错了?

您需要调整条形的宽度(默认情况下,宽度设置为 0.8;值越小,您就会明白为什么这会成为问题)。

您绘制的宽度设置为 0.01 (plt.bar(a,b, width = 0.01)) 的数据如下所示:

你提到的两个问题都是由于这个宽度参数造成的。 barplot 中的条形图 centered 围绕它们的 x 值,因此 0.1 是第一个条形图的中心(withdh 为 0.8,它的范围从 -0.3 到 0.5)。此外,由于第一个柱是最高的,它覆盖了该范围内的任何东西(因此除了最后一个柱之外的所有柱都至少部分被覆盖,由于重叠)。