我遇到了与此处报告的问题类似的问题。我不明白为什么刻度标签文本为空字符串:
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轴上显示了八个带标记的刻度。但是,如果我 在
显示图 后 要求标签,则该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除非有必要,否则避免了刻度线的静态定位,因为您可能希望与其进行交互:ax.set_xlim()
例如,如果可以的话。
在您的情况下,您可以使用绘制图形画布fig.canvas.draw()
来触发刻度线定位,以便检索其值。
或者,您可以显式设置xticks,这将依次将轴设置为FixedFormatter
,FixedLocator
并获得相同的结果。
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
我有福勒。数据帧: 我是这样画的: 结果图如下所示: 如何修复主要和次要刻度的数量,以便在主要刻度之间至少有10个主要刻度和用户指定的次要刻度的数量?
如何在下面的屏幕截图中获得由红色附件突出显示的部分的宽度? 我试过了 是刻度的列表,但没有任何返回刻度宽度的方法,例如或任何此类方法。
我想沿x轴水平移动一些记号的标签,而不移动相应的记号。 更具体地说,当使用
问题内容: 我可以用 但这也会删除标签。我可以以任何方式绘制刻度标签,但不能绘制刻度和书脊 问题答案: 您可以使用(http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params)将刻度长度设置为0 :
刻度指的是轴上数据点的标记,Matplotlib 能够自动的在 x 、y 轴上绘制出刻度。这一功能的实现得益于 Matplotlib 内置的刻度定位器和格式化器(两个内建类)。在大多数情况下,这两个内建类完全能够满足我们的绘图需求,但是在某些情况下,刻度标签或刻度也需要满足特定的要求,比如将刻度设置为“英文数字形式”或者“大写阿拉伯数字”,此时就需要对它们重新设置。 xticks() 和 ytic
问题内容: 对于y轴上的每个刻度标签,我想更改: 我正在绘制对数日志数据(以2为底),但是我希望标签显示原始数据值。 我知道我可以得到当前的y标签 这给了我一个列表: 每个列表都是 我在http://matplotlib.org/users/text_props.html上查看了文本对象的文档, 但是我仍然不确定更改每个文本标签中的字符串的正确语法是什么。 更改标签后,可以使用以下方法在轴上设置它