0

我正在学习 matplotlib 中的定位器。我自己写了一些代码来观察他们的具体结果。但是 IndexLocator 出现错误。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mtick
plt.switch_backend('Agg')
ax=plt.subplot(2,2,1)
ax.set_xlim(-5,47)
ax.xaxis.set_major_locator(mtick.IndexLocator(6,1))
print(ax.get_xticks())

上述代码异常。python 文件中出现最大允许大小超出错误。

有人可以给我一些建议吗?谢谢。

谢谢阿斯穆斯。当我添加情节语句时,错误消失了。但结果并不如预期。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.ticker as mtick
plt.switch_backend('Agg')
ax=plt.subplot(2,2,1)
ax.set_xlim(-5,47)  
ax.xaxis.set_major_locator(mtick.IndexLocator(6,1))
plt.plot([1,2,3,4])  #newly added
print(ax.get_xticks())

打印的是 [1]。但我认为正确的输出应该是 [1. 7. 13. 19. 25. 31. 37.]

4

1 回答 1

1

您需要实际绘制一些东西,以便有一些 x 限制,滴答定位器可以使用,例如添加一个简单的ax.scatter([0,10],[0,10])yield [1. 7.]for print(ax.get_xticks())

更新如下:

其实,[1]完全可以预料到当你plt.plot([1,2,3,4])

为什么?因为您的数据点是:[(0, 1), (1, 2), (2, 3), (3, 4)],这意味着您在IndexLocator处放置一个勾号1,但下一个(即1+ 6= 7)永远不会创建,因为您的 x 轴仅变为 3!

您至少需要绘制[1,2,3,4,5,6,7,8](即让您的 x 轴位于上方7)才能获得第二个刻度!

也许,您更愿意寻找: ax.set_xticks(np.arange(-5,47,6))

于 2020-12-01T12:54:43.323 回答