为什么在这个简单的散点图中 x 轴向后并且 x 和 y 轴没有标记

Why is the x axis backwards and x and y axis not labeled in this simple scatter plot

为什么这个简单的散点图不能正常工作?似乎我不得不为一些应该“正常工作”的东西而努力。我认为下面的代码应该生成以 (0,0) 为原点、x 轴和 y 轴最大为 10 的图,每个轴上都带有标记精美、间距均匀的刻度线。相反,原点在 1,7,x 轴向后,从右到左递减。

也许我要失明了,但我浏览了教程和图库,但找不到坐标平面上不同点的简单、简洁图的任何示例。

x = ['7', '8', '6', '7.5', '4']
y = ['1', '2', '2', '3', '3']
plt.scatter(x,y)
plt.xlim(0,10)
plt.ylim(0,10)
plt.show()

我也试过了

plt.plot(x,y, 'ro')
plt.axis([0,10,0,10])
plt.show()

结果相似。

我已经能够通过调用 plt.gca().invert_xaxis() 使 x 轴进入增加而不是减少的方向并手动将刻度线列表传递给 xticks 和 yticks 来获得理智的结果,但我没有不明白为什么这是必要的。为什么不设置 x 轴和 y 轴的最大值和最小值会导致图表具有合理的默认刻度线?

您的列表是字符串,而不是数字,所以 matplotlib 并不知道如何按照您期望的方式处理它们。从 x 和 y 列表中删除单引号,然后重试。