首页 > 解决方案 > 我在 python 中遇到关于 Y 轴顺序错误的 Mathplotlib 问题

问题描述

我想创建一个示例图。但是 Y 轴的排序顺序有问题。

图 1

我想知道为什么我将 X 轴定义为plt.xlim(0, 200). 当我尝试显示绘图时,顺序是正确的,但同样,我也定义了 y 轴,结果是错误的。我错过了哪一部分或我不正确?

这是我的代码:

假设 y 是许多值的列表(长度 = 110)

y = ['80', '35', '28', '25', '24', '25', '26', '27', '27', '26', '25', '27', '31', '25', '25', '25', '26', '29', '28', '27', '27', '26', '32', '27', '24', '25', '24', '31', '26', '28', '28', '26', '32', '27', '27', '25', '25', '26', '28', '26', '25', '25', '25', '27', '27', '27', '24', '23', '30', '28', '25', '23', '24', '26', '28', '25', '25', '26', '26', '25', '25', '24', '24', '24', '27', '28', '27', '25', '25', '26', '26', '26', '25', '24', '22', '31', '29', '26', '27', '26', '28', '26', '29', '24', '30', '31', '27', '28', '25', '31', '30', '28', '26', '24', '27', '27', '27', '27', '27', '27'...]

x2 = range(0,110)

fig = plt.subplot()
plt.title('Test')
plt.plot(x2, y, 'o-')
plt.ylim(0, 100)
plt.xlim(0,200)
plt.ylabel('A')
plt.show()

尽管我已经定义了,但任何人都可以解释 Y 轴错误的原因plt.ylim()吗?

标签: pythongraph

解决方案


主要问题是您的yis 字符串,并且在处理到绘图时字符串不会被排序。

您不需要使用xlimylim除非您希望图表显示数据的填充或裁剪版本。否则,将自动选择最合适的尺寸。

您可以使用如图所示map(int, y)的列表推导,或获取整数列表。

y_int = [int(y_i) for y_i in y]
x2 = range(0,len(y))

fig = plt.subplot()
plt.title('Test')
plt.plot(x2, y_int, 'o')
plt.ylabel('A')
plt.show()

在此处输入图像描述


推荐阅读