Python 使用IndexLocator时超出了允许的最大大小错误
我正在学习matplotlib中的定位器。我自己写了一些代码来观察它们的具体结果。但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
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))
?谢谢您的回复。我做了一些改变,但结果还是不尽如人意。我更新了下面的答案,解释了发生了什么。