x 轴 matplotlib 中的意外负值
Unexpected negative values in x-axis matplotlib
我有以下 x 和 y 值:
x = [0. , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
0.66, 0.68, 0.7 , 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86,
0.88, 0.9 , 0.92, 0.94, 0.96, 0.98]
y = [4179, 628, 41, 142, 117, 6, 11, 2, 1, 0, 6,
2, 12, 5, 7, 3, 2, 3, 2, 3, 30, 27,
31, 29, 14, 31, 22, 28, 18, 19, 19, 22, 20,
19, 21, 23, 25, 24, 20, 29, 23, 25, 31, 25,
24, 28, 23, 26, 32, 21]
我正在使用代码绘制条形图
fig, cx = plt.subplots(figsize =(15, 7))
cx.bar(x,y)
plt.show()
这给了我下面的情节
此图出乎意料,因为如图所示,x 轴的值介于 0 和 1 之间。数据中没有负值,也没有大于 1 的值。我不确定在 0-1 区域之外存在条形图的原因。
我尝试了以下两个问题链接中给出的解决方案:
和
Matplotlib yaxis range display using absolute values rather than offset values?
我尝试使用以下解决方案:
cx = plt.gca() cx.ticklabel_format(useOffset=False)
plt.bar(x, y, tick_label=x)
cx.get_xaxis().get_major_formatter().set_useOffset(False)
cx = plt.gca() cx.set_xticklabels(ax.get_xticks())
解决方案 #1、#3 和 #4 没有导致任何更改。解决方案 #2 添加了刻度,并且值重叠,如下图所示。但是条形图没有改变。
由于图表中间区域的条形很少有较小的条形宽度,因此这里似乎不是更大的条形宽度的问题。
任何解决此问题的想法都将受到赞赏。提前致谢:)
plt.bar()
的文档应该清楚了。
该函数在 x
处创建 centered 条形,每个条形的宽度为 width
(默认为 0.8)。因此,您的第一个条形以 x = 0 为中心,范围从 -0.4 到 0.4。最后一个也是如此。您可以更改对齐方式或宽度(更小会使它们更薄),仅此而已。
我有以下 x 和 y 值:
x = [0. , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,
0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,
0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,
0.66, 0.68, 0.7 , 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86,
0.88, 0.9 , 0.92, 0.94, 0.96, 0.98]
y = [4179, 628, 41, 142, 117, 6, 11, 2, 1, 0, 6,
2, 12, 5, 7, 3, 2, 3, 2, 3, 30, 27,
31, 29, 14, 31, 22, 28, 18, 19, 19, 22, 20,
19, 21, 23, 25, 24, 20, 29, 23, 25, 31, 25,
24, 28, 23, 26, 32, 21]
我正在使用代码绘制条形图
fig, cx = plt.subplots(figsize =(15, 7))
cx.bar(x,y)
plt.show()
这给了我下面的情节
此图出乎意料,因为如图所示,x 轴的值介于 0 和 1 之间。数据中没有负值,也没有大于 1 的值。我不确定在 0-1 区域之外存在条形图的原因。
我尝试了以下两个问题链接中给出的解决方案:
我尝试使用以下解决方案:
cx = plt.gca() cx.ticklabel_format(useOffset=False)
plt.bar(x, y, tick_label=x)
cx.get_xaxis().get_major_formatter().set_useOffset(False)
cx = plt.gca() cx.set_xticklabels(ax.get_xticks())
解决方案 #1、#3 和 #4 没有导致任何更改。解决方案 #2 添加了刻度,并且值重叠,如下图所示。但是条形图没有改变。
由于图表中间区域的条形很少有较小的条形宽度,因此这里似乎不是更大的条形宽度的问题。
任何解决此问题的想法都将受到赞赏。提前致谢:)
plt.bar()
的文档应该清楚了。
该函数在 x
处创建 centered 条形,每个条形的宽度为 width
(默认为 0.8)。因此,您的第一个条形以 x = 0 为中心,范围从 -0.4 到 0.4。最后一个也是如此。您可以更改对齐方式或宽度(更小会使它们更薄),仅此而已。