首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >plt.yticks不能正常工作- matplotlib

plt.yticks不能正常工作- matplotlib
EN

Stack Overflow用户
提问于 2021-04-14 09:48:49
回答 2查看 391关注 0票数 0

我正在进行一个统一的项目,并从一个C#脚本中调用Python脚本来使用matplotlib在图上绘制一些值,除了图上的yticks之外,一切都很好。将要绘制的值是在0.5和5.5之间浮动的,下面是供参考的图表:

我所做的设置yticks的方法如下:

代码语言:javascript
复制
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问题仍然存在。

代码语言:javascript
复制
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()

图形应该是这样的:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-15 08:32:09

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

票数 0
EN

Stack Overflow用户

发布于 2021-04-15 08:37:57

您可以显式地设置滴答频率如下:

代码语言:javascript
复制
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()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67089405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档