【问题标题】:plt.yticks not working properly - matplotlibplt.yticks 无法正常工作 - matplotlib
【发布时间】:2021-07-09 08:46:13
【问题描述】:

我正在统一开发一个项目,并从 C# 脚本调用 Python 脚本以使用 ma​​tplotlib 在图表上绘制一些值,除了图表上的 yticks 外,一切正常。 将要绘制的值是 0.5 和 5.5 之间的浮点数,这是供参考的图表:

我为设置 yticks 所做的工作如下:

plt.plot(x,y)
plt.yticks([0, 2, 4, 5])
plt.xlabel("frame")
plt.ylabel("distance")
plt.show()

正如您所见,在指定位置[0, 2, 4, 5] 没有刻度,而是在 0.5 左右显示 4 个刻度。看起来无论我传递给yticks() 的数组是什么,它只需要它的len() 并放置确切的刻度数,但是在错误的位置,我猜是y 轴的前n 个值

Python 版本:3.8.8,Matplotlib 版本:3.4.1

非常感谢任何愿意提供帮助的人。

编辑:最小的可重现示例。 上图是使用 600 个值生成的,在下面的示例中仅使用了 50 个值,因此图形有所不同,但 ytick 问题仍然存在。

import matplotlib.pyplot as plt 

y = ['0.5356', '0.5356', '0.5615', '0.5509', '0.4958', '0.4944', '0.5056', '0.5512', '0.6314', 
     '0.7394', '0.8761', '1.0320', '1.2066', '1.3692', '1.5456', '1.7262', '1.9124', '2.0955',
     '2.2262', '2.2424', '2.2363', '2.2285', '2.1811', '2.1159', '2.0400', '1.9590', '1.8685',
     '1.7614', '1.6517', '1.5322', '1.3897', '1.2642', '1.1080', '0.9256', '0.8161', '0.6624',
     '0.5240', '0.3763', '0.2361', '0.1649', '0.2151', '0.3441', '0.5065', '0.6785', '0.8355',
     '1.0118', '1.1708', '1.3253', '1.4888', '1.6247']
x = [i for i in range(1, 51)]

# plotting
plt.plot(x,y)
plt.yticks([0, 2, 4, 5])
plt.xlabel("frame")
plt.ylabel("distance")
plt.show()

图形应该是这样的:

【问题讨论】:

  • 你是如何读取数据的?你确定它们是花车吗?创建minimal reproducible example 将使我们更容易提供帮助
  • 基本上我使用 Process.start() 从 C# 调用 python 脚本,并且我将值作为参数传递,是的,我确定它们是浮点数。我将尝试创建一个最小的可重现示例并在问题 btw 中对其进行编辑

标签: python matplotlib


【解决方案1】:

好吧,我是个白痴。 像往常一样,这是我做过的最愚蠢的事情。 值不是浮点数而是字符串。

【讨论】:

    【解决方案2】:

    您可以像这样显式设置滴答频率:

    import matplotlib.pyplot as plt 
    
    y = ['0.5356', '0.5356', '0.5615', '0.5509', '0.4958', '0.4944', '0.5056', '0.5512', '0.6314', 
         '0.7394', '0.8761', '1.0320', '1.2066', '1.3692', '1.5456', '1.7262', '1.9124', '2.0955',
         '2.2262', '2.2424', '2.2363', '2.2285', '2.1811', '2.1159', '2.0400', '1.9590', '1.8685',
         '1.7614', '1.6517', '1.5322', '1.3897', '1.2642', '1.1080', '0.9256', '0.8161', '0.6624',
         '0.5240', '0.3763', '0.2361', '0.1649', '0.2151', '0.3441', '0.5065', '0.6785', '0.8355',
         '1.0118', '1.1708', '1.3253', '1.4888', '1.6247']
    y = [float(i) for i in y]
    x = [i for i in range(1, 51)]
    
    # plotting
    plt.plot(x,y)
    plt.yticks(np.arange(min(y), max(y)+1, 1.0))
    plt.xlabel("frame")
    plt.ylabel("distance")
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2021-10-04
      • 2019-12-02
      • 2023-03-30
      • 2023-03-12
      • 2023-03-06
      • 2016-12-01
      • 1970-01-01
      • 2019-06-20
      相关资源
      最近更新 更多