get_xticklabels()包含空文本实例

jjv*_*ade 6 python matplotlib

我正在尝试旋转图中的x刻度标签。我创建了一个通用函数,以要绘制的样式进行绘制。我执行以下操作:

labels=ax2.get_xticklabels()
for i,label in labels:
   labels[i]=label.get_text()
ax2.set_xticklabels(labels, rotation=30)
Run Code Online (Sandbox Code Playgroud)

这产生了没有x_tick标签的图,因此我进行了更深入的研究:我让它在循环时打印标签,并且它们是空文本实例。但是,这是很奇怪的地方:当我只获取标签(labels = ax2.get_xticklabels()),并让plot函数返回文本实例列表(返回标签)时,列表中的Text实例确实具有正确的字符串,上面的代码将按预期生成字符串列表。我不确定为什么当我尝试在函数内部对其进行编辑时文本实例为空,但是当我使函数返回标签未经编辑时,它是正确的。有什么建议吗?

Sto*_*ica 8

我将根据您问题的标题回答,因为我不理解其后的解释。

在绘制图形之前,不会填充刻度标签。

plt.plot([1, 2])
ax = plt.gca()
labels = ax.get_xticklabels()
for label in labels:
    print(label)
Run Code Online (Sandbox Code Playgroud)

输出:

Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Run Code Online (Sandbox Code Playgroud)

致电时,plt.draw()将打勾标签:

plt.plot([1, 2])
ax = plt.gca()
plt.draw()
labels = ax.get_xticklabels()
for label in labels:
    print(label)
Run Code Online (Sandbox Code Playgroud)

输出:

Text(0,0,'')
Text(0,0,'0.0')
Text(0.2,0,'0.2')
Text(0.4,0,'0.4')
Text(0.6,0,'0.6')
Text(0.8,0,'0.8')
Text(1,0,'1.0')
Text(0,0,'')
Run Code Online (Sandbox Code Playgroud)


小智 -2

for tl in ax2.get_xticklabels():
    tl.set_rotation(30)
Run Code Online (Sandbox Code Playgroud)