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)。此外,由于第一个柱是最高的,它覆盖了该范围内的任何东西(因此除了最后一个柱之外的所有柱都至少部分被覆盖,由于重叠)。
我的代码:
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)。此外,由于第一个柱是最高的,它覆盖了该范围内的任何东西(因此除了最后一个柱之外的所有柱都至少部分被覆盖,由于重叠)。