Поместите метки радиальных осей перед линиями полярного сюжета. - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь заставить радиальные (или ось y) метки на полярном графике идти поверх линий, которые наносятся на график.Прямо сейчас они находятся ниже линий и прикрыты.

enter image description here

Вот упрощенная версия кода только для одного города и одной строки:

fig, ax = plt.subplots(figsize=(10,6) , nrows=1, ncols=1,subplot_kw=dict(projection='polar'))
rmax = 15
rticks = np.arange(9,rmax,1.5)
rticklabel = np.arange(18,rmax*2,3).astype(int)

theta = np.arange(0,6.3, 0.17) #plots a circle
r = np.ones(len(theta))*(21/2)
ax.plot(theta, r,c='r', linestyle='-',linewidth = 4,zorder=1)

ax.set_rmax(rmax)
ax.set_rticks(rticks)  # less radial ticks

ax.set_xticklabels([])  
ax.set_rlabel_position(285)  # get radial labels away from plotted line
ax.grid(True)

ax.set_facecolor('white') 
ax.yaxis.grid(color='silver', linestyle=':',linewidth = 1.5,zorder=10)
ax.set_yticklabels(rticklabel,fontsize=12,zorder=10) #this zorder does nothing

Я уже пробовалэто:

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

Это выводит текст на передний план, как я хочу, однако, это также приносит линии сетки.Я бы хотел, чтобы те остались за цветными линиями.

Я также пытался изменить zorder сетки яксиса, но это не работает.

Большинство решений для этого не для полярной оси.Какие-либо предложения?

1 Ответ

0 голосов
/ 13 декабря 2018

К сожалению, кажется, что порядок сетки и меток привязан к оси осей: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.grid.html

Одно из возможных решений, даже если оно не изящное, - это нарисовать линии сетки самостоятельно

fig, ax = plt.subplots(figsize=(10,6) , nrows=1, ncols=1,subplot_kw=dict(projection='polar'))
rmax = 15
rticks = np.arange(9,rmax,1.5)
rticklabel = np.arange(18,rmax*2,3).astype(int)

theta = np.arange(0,6.3, 0.17) #plots a circle
r = np.ones(len(theta))*(21/2)
ax.plot(theta, r,c='r', linestyle='-',linewidth = 4,zorder=2)

ax.set_rticks(rticks)  # less radial ticks

ax.set_xticklabels([])  
ax.set_rlabel_position(285)  # get radial labels away from plotted line
ax.xaxis.grid(True)
ax.yaxis.grid(False)

ax.set_facecolor('white') 
ax.set_yticklabels(rticklabel,fontsize=12,zorder=10) #this zorder does nothing
ax.yaxis.set_zorder(10)
#ax.yaxis.grid(color='silver', linestyle=':',linewidth = 1.5,zorder=10)

x = np.arange(0,2*np.pi,0.05)
y = np.outer( np.ones(x.shape), rticks)
ax.plot( x,y, zorder=1, color='silver', linestyle=':')
ax.set_ylim(0,rmax)

enter image description here

...