为什么 Python Matplotlib 条形图的 X 轴刻度显示奇怪且错误的负值?

Why is Python Matplotlib bar-chart's X axis ticks showing strange and wrong negative values?

当 X 轴值在 43990 - 44003 范围内时,为什么我的 X 轴刻度显示负值。

import matplotlib.pyplot as plt
x=[44000, 44001, 44002, 44003, 43990, 43991, 43992, 43993, 43994, 43995, 43996, 43997, 43998, 43999]
y=[8, 5, 3, 1, 1, 3, 4, 10, 4, 11, 4, 10, 17, 19]
plt.bar(x,y)
plt.show()

我看到了以下输出。我期望 x 轴的范围是 43990 - 44003

我已经在几台机器上试过了,在 python 和 matplotlib(试过几个不同的版本)的最新版本上都表现出类似的奇怪行为

Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19) [GCC 7.2.0] on linux

Python 3.4.3 (default, Nov 17 2016, 01:08:31)

奇怪的是,许多琐碎的玩具示例 x 和 y 数组给出了我预期的数字。

例如,下面的代码片段显示了带有正确 x 轴刻度标签的预期图形

x=[20,30,90,70, 50, 60, 80, 70]
y=[3,2,5,10, 3, 9, 7, 6]
plt.bar(x,y)
plt.show()

我在这里遗漏了什么明显的东西?

您的图右下角缺少“+4.4e4”。例如,刻度标签“-4”应读作:44000 - 4 = 43996

您的图表底部有 +4.4e4。如果这是真的,那么它似乎是正确的。 4.4e4 +4 = 44004 和 44000 - 10 = 43990。所以我对你的问题感到困惑,因为情节比例似乎是正确的。

您需要禁用偏移量:

plt.ticklabel_format(useOffset=False)

另一种选择是输入自定义刻度标签:

plt.bar(x, y, tick_label=x)