J'essaye de faire une intrigue polaire 'sypder' mais j'ai quelques problèmes avec les étiquettes d'axe. Les étiquettes de tôle xaxis semblent toujours se retrouver sur une couche en dessous de la grille de l'axe des y (les lettres sont couvertes par la ligne de la grille, comme le montre la figure ci-dessous), je les voudrais sur le dessus.Etiquette de l'axe cachée par l'axe dans l'intrigue?
J'ai essayé de régler les zorders mais sans succès. Si je mets la zordre des lignes tracées au-dessus de 2, elles vont en haut (en termes de calque) de l'axe et de la grille ... mais je veux quand même que les étiquettes soient visibles sur le tracé. Si je les place en dessous de 2, les lignes passent sous la grille. Définir la zord de la grille ou les étiquettes des tiques ne semble pas avoir d'effet.
Voici ma tentative: comme vous pouvez le voir, les lignes rouges de la grille se retrouvent au-dessus du texte «industrie» tandis que la ligne grise de la grille reste en dessous. Je voudrais « industrie » pour être au-dessus des deux lignes et des parcelles
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import random
data = random.sample(range(100), 5)
data[0] = 100
data[3] = 50
index = ['industry', 'residential', 'agriculture', 'transport', 'other']
df1 = pd.DataFrame(data, index=index, columns=['data'])
df2 = pd.DataFrame(np.array(data)/2, index=index, columns=['data'])
fig = plt.figure()
ax = fig.add_subplot(111, projection="polar")
ax.grid(True)
ax.yaxis.grid(color='r')
ax.xaxis.grid(color='#dddddd')
for spine in ax.spines.values():
spine.set_edgecolor('None')
theta = np.arange(len(df1))/float(len(df1))*2.*np.pi
l1, = ax.plot(theta, df1["data"], color="gold", marker="o", label=None, zorder=1) # , zorder = -3)
l2, = ax.plot(theta, df2["data"], color='tomato', marker="o", label=None, zorder=1.1) #, zorder =-2)
def _closeline(line):
x, y = line.get_data()
x = np.concatenate((x, [x[0]]))
y = np.concatenate((y, [y[0]]))
line.set_data(x, y)
[_closeline(l) for l in [l1, l2]]
ax.fill(theta, df1["data"], "gold", alpha=1, zorder=1)
ax.fill(theta, df2["data"], 'tomato', alpha=1, zorder=1.1)
ax.set_rlabel_position(216)
ax.set_xticks(theta)
ax.set_xticklabels(df2.index, fontsize=12)#, zorder=1)
legend = plt.legend(handles=[l1,l2], labels =['first','second'], loc='lower right')
plt.title("data [unit]", fontsize = 16, y = 1.2)
plt.savefig('atlas//trial2.png', bbox_inches='tight', dpi = 300)
plt.show()
J'ai essayé plusieurs combinaisons de 'zorder's qui pourraient affecter votre problème, en vain. Cela pourrait être un bug similaire [à celui-ci] (https://github.com/matplotlib/matplotlib/issues/5045). Les graphiques polaires semblent toujours un peu plus problématiques que les graphiques cartésiens. Bravo pour la question bien formée complète avec exemple exécutable! –