matplotlib 为什么条形图的x轴刻度显示奇怪和错误的负值?[副本]

oprakyz7  于 2023-06-06  发布在  其他
关注(0)|答案(3)|浏览(129)

此问题已在此处有答案

yaxis range display using absolute values rather than offset values(3个答案)
5年前关闭。
为什么当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 x1c 0d1x
我已经在几台机器上试过了,在最近的Python和Matplotlib版本上都显示出类似的奇怪行为(试了几个不同的版本)
简体中文|Anaconda公司|(default,Jan 16 2018,18:10:19)[GCC 7.2.0] on linux
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()

我在这里错过了什么明显的事情?

tkclm6bt

tkclm6bt1#

您需要禁用偏移:

plt.ticklabel_format(useOffset=False)

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

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

9rygscc12#

你的图表底部有+4.4e4。如果这是真的,那么它似乎是正确的。4.4e4 + 4 = 44004和44000 - 10 = 43990。所以我被你的问题弄糊涂了,因为情节比例似乎是正确的。

pvcm50d1

pvcm50d13#

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

相关问题