我遇到了一个类似的问题.我不明白为什么勾号标签文本是空字符串:

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)以及如何在显示或保存绘图时获取标签?

推荐答案

您已经正确地识别了问题:在调用plt.show()之前,没有明确设置任何内容.这是因为matplotlib避免了蜱虫的静态定位,除非它必须这样做,因为您可能想要与之交互:例如,如果可以的话.

在您的例子中,您可以使用fig.canvas.draw()绘制图形画布以触发记号定位,这样您就可以检索它们的值.

或者,您可以明确地设置XTICK,从而将轴设置为FixedFormatterFixedLocator,并获得相同的结果.

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)
ax.set_xlim(0,6)

# Must draw the canvas to position the ticks
fig.canvas.draw()
# Or Alternatively
#ax.set_xticklabels(ax.get_xticks())

labels = ax.get_xticklabels()
for label in labels:
    print(label.get_text())

plt.show()

Out:
0
1
2
3
4
5
6

Python-3.x相关问答推荐

Python gpsd客户端

While循环不停止地等待,直到时间.睡眠结束

ValueError at /register/ 视图authenticate.views.register_user 未返回HttpResponse 对象.它返回 None 相反

DataFrame列中如何迭代重复值?

在新数据帧上自动提取两个字符串 python 之间的相等性

在 string.find() 条件下加入两个 Dataframes

Pytest顺序测试A,然后测试B,然后再测试A

Pygame 错误地渲染等距图像

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

为什么 List 不能包含多种类型?

使用 python 正则表达式匹配日期

为什么不切换到 Python 3.x?

无法在 Windows Python 3.5 上安装 Levenshtein 距离包

Tkinter 窗口显示(无响应)但代码正在运行

pip install dryscrape 失败并显示错误:[Errno 2] 没有这样的文件或目录:'src/webkit_server'?

Python 3 与 Python 2 映射行为

python asyncio - 如何等待取消的屏蔽任务?

如何区分文件之类的对象和文件路径之类的对象

SQLAlchemy:如果不存在则创建模式

Python pathlib 获取父级相对路径