【问题标题】:Unexpected negative values in x-axis matplotlibx轴matplotlib中的意外负值
【发布时间】:2021-12-02 18:24:15
【问题描述】:

我有以下 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 区域之外存在条形的原因。

我尝试了以下两个问题链接中给出的解决方案: Why is Python Matplotlib bar-chart's X axis ticks showing strange and wrong negative values?Matplotlib yaxis range display using absolute values rather than offset values?

我尝试使用以下解决方案:

  1. cx = plt.gca() cx.ticklabel_format(useOffset=False)
  2. plt.bar(x, y, tick_label=x)
  3. cx.get_xaxis().get_major_formatter().set_useOffset(False)
  4. cx = plt.gca() cx.set_xticklabels(ax.get_xticks())

解决方案 #1、#3 和 #4 没有带来任何变化。解决方案 #2 添加了刻度,并且值重叠,如下图所示。但是条形没有改变。

由于图表中间区域的条形图的条形宽度较小,因此较大的条形宽度似乎不是问题。

感谢任何解决此问题的想法。在此先感谢:)

【问题讨论】:

标签: python matplotlib bar-chart


【解决方案1】:

plt.bar() 的文档应该可以解决问题。

该函数在x 处创建居中 条,每个条的宽度为width(默认为0.8)。因此,您的第一个条形图以 x = 0 为中心,范围从 -0.4 到 0.4。最后一个也是如此。您可以更改对齐方式或宽度(更小会使它们更薄),仅此而已。

【讨论】:

  • 非常感谢!现在问题很清楚了。我改变了宽度,现在它工作得很好。
猜你喜欢
  • 2021-01-13
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2015-08-28
  • 1970-01-01
  • 2018-12-03
相关资源
最近更新 更多