有没有办法可以使轴标签的背景变白,这样当它穿过轴线本身时,后者不会穿过它?
例如,这个脚本(我迄今为止管理得最好)
#!/usr/bin/python
import matplotlib.pyplot as plt
xx=[1,2,3]
yy=[2,3,4]
dy=[0.1,0.2,0.05]
fig=plt.figure()
ax=fig.add_subplot(111)
ax.errorbar(xx,yy,dy,fmt='ro-',ms=6,elinewidth=4)
ax.set_xlim([0.,3.4])
ax.set_ylim([0.,4.4])
ax.set_xlabel(r'$T/t$',fontsize=16)
ax.set_ylabel(r'$S(\mathbf{Q})L^{1+\eta}$',fontsize=16)
# position the axis labels
ax.xaxis.set_label_coords(1,0)
ax.yaxis.set_label_coords(0.1,0.93)
ax.yaxis.get_label().set_rotation('horizontal')
ax.yaxis.get_label().set_backgroundcolor('w')
#ax.yaxis.get_label().set_zorder(222) #doesn't do the trick
plt.show()
几乎产生了我正在寻找的东西,但y轴仍然在标签上运行:。
答案 0 :(得分:2)
默认情况下,左侧脊椎的zorder为2.5。出于某种原因,这似乎会引起问题;也许代码中有些东西只有在它们是不可分割的情况下才有效?无论如何,如果你添加
ax.spines['left'].set_zorder(2)
或更一般地
ax.spines['left'].set_zorder(ax.yaxis.get_label().get_zorder()-1)
演出前,它应该工作。此外,set_ylabel返回ylab对象本身,因此如果你使用“ylab = ax.set_ylabel(stuff)”,你可以避免以后所有的ax.yaxis.get_label()调用。
答案 1 :(得分:0)
此链接有助于您吗? http://matplotlib.sourceforge.net/faq/howto_faq.html#automatically-make-room-for-tick-labels 您可以简单地将y轴向右移动以允许$ S(\ mathbf {Q})L ^ {1+ \ eta} $标记的一些空间完全放置在轴线之前。