【问题标题】:Matplotlib not showing adequate continuityMatplotlib 没有显示出足够的连续性
【发布时间】:2021-05-04 17:21:44
【问题描述】:

所以我一直在尝试了解 MatPlotLib 的工作原理,以便我可以显示数据库中的数据。我目前正在努力解决可能是错误的问题。基本上,当数据从 3864423 更改为 3500000 时,该行应该下降,但事实并非如此。代码如下:

from matplotlib import pyplot as plt

dev_x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

dev_y = ['3514942', '3524077', '3524077', '3540430', '3540430', '3643543', '3753312', '3864423',
         '3500000', '3990458', '3965666']

plt.plot(dev_x, dev_y)
plt.show()

Here's the image with the graph output

我想知道为什么会发生这种情况,我该如何解决。另外我真的希望 Y 轴 看起来更有条理,所以它有对称的步骤,例如 3000000-3250000-3500000-etc...

【问题讨论】:

  • 您在 Y 轴上绘制字符串值。对于 matplotlib '3500000' 和 '3864423' 与 'Hello' 和 'world' 不同(哪个更高?)。将您的值更改为数字(int/float)
  • 好吧,确实做了一些事情,但是现在我的 Y 轴正在执行奇怪的步骤,我不知道如何更改(?)gyazo.com/3822740e3ae8200f7e79f0117bfaef6f
  • “奇怪的步骤”?您希望情节是什么样的?
  • 正如我在帖子的最后部分所说,我希望它从 3000000 开始,然后是 3250000,然后是 3500000 ......因为这个数字很高

标签: python python-3.x matplotlib plot


【解决方案1】:

以下应该有效:

from matplotlib import pyplot as plt
import numpy as np

dev_x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
dev_y = [3514942, 3524077, 3524077, 3540430, 3540430, 3643543,3753312,3864423, 
         3500000, 3990458, 3965666]

plt.plot(dev_x, dev_y)
plt.ticklabel_format(style='plain') #this to set y-axsis to normal values
plt.ylim([3000000,5000000])
plt.yticks(np.arange(3000000,5000000,250000))
plt.show()

【讨论】:

  • 所以... yticks 是 ylim 之间的步骤吗?还有,正常值是什么意思,字符串?
  • 是的 yticks 是 ylim 之间的步骤。至于正常值,是指数据点的实际格式,如果不加此行,此时的y轴值将设置为对数格式。
  • 我还有一些问题需要更多解释,我可以通过 discord 或其他方式与您联系吗?
猜你喜欢
  • 1970-01-01
  • 2015-03-20
  • 1970-01-01
  • 2013-01-14
  • 2011-02-09
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多