Matplotlib:如何在图上方设置刻度线标签

时间:2018-07-22 11:17:22

标签: python matplotlib

Not good
这是我使用matplotlib绘制的正弦和余弦图。但是刻度线标签位于图的下方,几乎看不到。

我的python代码是:

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8,6), dpi=96)
plt.subplot(111)

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C,S = np.cos(X), np.sin(X)

plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="consine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")

plt.xlim(X.min()*1.1, X.max()*1.1)
plt.ylim(C.min()*1.1, C.max()*1.1)

plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
          [r'$-\pi$', r'$-\frac{\pi}{2}$', r'$0$', r'$+\frac{\pi}{2}$', r'$+\pi$'])
plt.yticks([-1,  1],
          [r'$-1$', 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))

plt.legend(loc='upper left', frameon=False)


for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='green', edgecolor='None', alpha=0.2))


plt.savefig("figures/exercise10.png", dpi=120)
plt.show()

那么,我该如何在情节上方设置刻度线标签?

Ideal effect

谢谢!

1 个答案:

答案 0 :(得分:2)

可能您想设置标签,并且将轴尖刺设置在线条的顶部。使用"axes.axisbelow" rcParam可以轻松实现。

plt.rcParams["axes.axisbelow"] = False

enter image description here