我正在尝试使用下面的简单代码自定义散点图的xticks和yticks:
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
y_ticks = np.arange(10, 41, 10)
x_ticks = np.arange(1000, 5001, 1000)
ax.set_yticks(y_ticks)
ax.set_xticks(x_ticks)
ax.scatter(some_x, some_y)
plt.show()
如果我们注释掉这一行:ax.scatter(x, y)
,我们会得到一个带有正确结果的空图:
但是,如果代码完全如图所示运行,我们会得到:
最后,如果我们运行代码ax.set_yticks(yticks)
和ax.set_xticks(xticks)
注释掉,我们也会得到正确的结果(只是轴不在我想要的范围内)是):
请注意,我使用的是Python 2.7版。此外,省略some_x
和some_y
。
在我尝试绘制散点图之后,任何有关轴为何以这种奇怪方式发生变化的输入都将受到赞赏。
编辑:
如果我在设置ax.scatter(x, y)
和xticks
之前运行yticks
,我会得到与之前略有不同的奇怪结果:
答案 0 :(得分:2)
Matplotlib轴将始终根据内容进行调整。这是一个理想的功能,因为它允许始终查看绘制的数据,无论它的范围是-10到-9还是1000到10000.
设置xticks只会更改刻度线位置。因此,如果您将刻度设置为介于-10和-9之间的位置,但随后将数据从1000设置为10000,则根本看不到任何刻度,因为它们不在所示范围内。
如果自动选择的限制不是您要查找的限制,则需要使用ax.set_xlim()
和ax.set_ylim()
手动设置限制。
最后应该清楚的是,为了在轴上显示正确的数字,您需要实际使用数字。如果some_x
中的some_y
和ax.scatter(some_x, some_y)
是字符串,则它们将不遵守任何合理的限制,而只是一个接一个地绘制。