Python 使用IndexLocator时超出了允许的最大大小错误

Python 使用IndexLocator时超出了允许的最大大小错误,python,matplotlib,Python,Matplotlib,我正在学习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.Index

我正在学习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文件中出现“超出允许的最大大小”错误

有人能给我一些建议吗?谢谢

谢谢阿斯莫斯。当我添加plot语句时,错误消失了。但结果并不像预期的那样

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.]

你需要实际绘制一些东西,以便有一些刻度定位器可以使用的x限制,例如添加一个简单的
ax.scatter([0,10],[0,10])
打印(ax.get\xticks())生成
[1.7.]

以下更新:

实际上,
[1]
当你
plt.plot([1,2,3,4])
时,你完全可以期待的

为什么??因为您的数据点是:
[(0,1)、(1,2)、(2,3)、(3,4)]
,这意味着您的
索引定位程序在
1
处放置一个勾号,但下一个(即
1
+
6
=
7
)永远不会创建,因为您的x轴只指向3

您需要至少绘制
[1,2,3,4,5,6,7,8]
(即,将x轴置于
7
上方)以获得第二个刻度


也许,您正在寻找:
ax.set\u xticks(np.arange(-5,47,6))

谢谢您的回复。我做了一些改变,但结果还是不尽如人意。我更新了下面的答案,解释了发生了什么。