在下面的代码中,轴的标签隐藏在图形线后面:
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X,C)
plt.plot(X,S)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(14)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.75 ))
plt.show()
您可以看到,例如-pi
很难看到。有没有办法将轴标签放在前面?
答案 0 :(得分:2)
有一个rcParameter axes.axisbelow
可以完全控制此行为:
axes.axisbelow
:绘制轴网格线和刻度线
- 以下补丁(True);
- 以上补丁但在线下('line');
- 或以上(假)
如果您设置
plt.rcParams["axes.axisbelow"] = False
在脚本的顶部,网格线和刻度线(标签)s绘制在其他所有内容之上。结果看起来像
答案 1 :(得分:0)
尽管Ernest's answer很有帮助,但我发现rcParams
界面有些笨拙。幸运的是,您可以使用set_axisbelow()
method在轴上直接设置axisbelow
选项。这是您的代码的修补版本。
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X,C)
plt.plot(X,S)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
ax.set_axisbelow(False) # <-- added
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(14)
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.75 ))
plt.show()
现在情节看起来像Nicolas P. Rougier's tutorial说应该这样: