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

为什么Python Matplotlib条形图是';X轴刻度显示奇怪和错误的负值?,python,python-3.x,matplotlib,data-analysis,Python,Python 3.x,Matplotlib,Data Analysis,为什么X轴刻度在43990-44003之间时显示负值 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轴的范

为什么X轴刻度在43990-44003之间时显示负值

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.|(默认,2018年1月16日,18:10:19) linux上的[GCC 7.2.0]

Python 3.4.3(默认值,2016年11月17日,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)

你想保留x值的顺序吗?另一个问题回答了同样的问题,但在我广泛搜索答案时没有出现。我相信这个问题的框架提供了很少的附加值-1个非常简单/基本的例子,(2)说出-ve值,这真的很困惑,这可能有助于其他人找到答案。提供另一个问题的链接可以解决您的问题吗?“+4.4e4”表示44000,-2,-4…等表示什么?(44000-4)?没错,谢谢你的回答。。。它起作用了。如果我用轴来绘图(比如ax.bar(x,y))你知道你的第一个解的等式吗?@jithu83是的,它是相同的:
ax.ticklabel\u格式(usecoffset=False)