【发布时间】:2017-04-28 14:55:15
【问题描述】:
我遇到了与报告的here 类似的问题。我不明白为什么刻度标签文本是一个空字符串:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi,100)
y = np.sin(x)**2
fig, ax = plt.subplots()
ax.plot(x,y)
labels = ax.get_xticklabels()
for label in labels:
print(label)
plt.show()
输出:
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
我得到与ax.xaxis.get_ticklabels() 相同的结果,但绘制的图形在保存或显示时在 x 轴上显示了八个标记的刻度。但是,如果我要求标签 after 我显示情节,那么 labels 列表会正确填充。当然,到那时再做任何改变都为时已晚。
fig, ax = plt.subplots()
ax.plot(x,y)
plt.show()
labels = ax.get_xticklabels()
for label in labels:
print(label)
输出:
Text(0,0,'0')
Text(1,0,'1')
Text(2,0,'2')
Text(3,0,'3')
Text(4,0,'4')
Text(5,0,'5')
Text(6,0,'6')
Text(7,0,'7')
为什么会发生这种情况(Mac OS X Yosemite、Matplotlib 1.5.1)以及如何在显示或保存绘图之前获取标签?
【问题讨论】:
-
获取
xticklabels的目的是什么?您始终可以使用ax.set_xticklabels(["0","1"])(只是一个示例)来拥有自己的自定义xticklabels。提供一个字符串列表作为标签。如果列表中提供的字符串数量较少,则剩余的ticklabels将显示为空。参考:matplotlib.org/api/…
标签: python python-3.x matplotlib label