我想在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)
。
答案 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()