添加自定义刻度和标签

时间:2014-03-07 09:17:09

标签: python matplotlib

我想在matplotlib中添加自定义主要标记和标签。通常的用途是在math.pi位置添加标签"$\pi$"。我的目标是保留其他刻度:我希望保留原始的主要和次要刻度,使用之前选择的格式,但使用此额外的刻度和标签。我找到了一种方法(并在这些论坛上找到了帖子)来添加勾号:

list_loc=list(ax.xaxis.get_majorticklocs())
list_loc.append(pos)
list_loc.sort()
ax.xaxis.set_ticks(list_loc)

我的麻烦在于标签。我试图以与ax.xaxis.get_majorticklabels()类似的方式检索标签,但这给了我一个matplotlib.text.Text的列表,我不确定如何处理。我的目的是将标签列表作为字符串,添加新标签(在正确的位置),然后以类似于位置的方式使用ax.xaxis.set_ticklabels(list_label)

1 个答案:

答案 0 :(得分:6)

这就是我通常所做的,尽管我从未对这种方法感到满意。没有调用draw()可能有更好的方法。

fig,ax=plt.subplots()
x=linspace(0,10,1000)
x.plot(x,exp(-(x-pi)**2))
plt.draw()#this is required, or the ticklabels may not exist (yet) at the next step
labels = [ w.get_text() for w in ax.get_xticklabels()]
locs=list(ax.get_xticks())
labels+=[r'$\pi$']
locs+=[pi]
ax.set_xticklabels(labels)
ax.set_xticks(locs)
ax.grid()
plt.draw()

enter image description here