web-dev-qa-db-fra.com

Supprimer l'intrigue supplémentaire dans la sous-intrigue matplotlib

Je veux tracer 5 trames de données dans un paramètre 2 par 3 (c'est-à-dire 2 lignes et 3 colonnes). Voici mon code: Cependant, il y a un tracé supplémentaire vide en 6ème position (deuxième ligne et troisième colonne) dont je veux me débarrasser. Je me demande comment je pourrais l'enlever pour avoir trois parcelles dans la première rangée et deux parcelles dans la deuxième rangée.

import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=3)

fig.set_figheight(8)
fig.set_figwidth(15)



df[2].plot(kind='bar',ax=axes[0,0]); axes[0,0].set_title('2')

df[4].plot(kind='bar',ax=axes[0,1]); axes[0,1].set_title('4')

df[6].plot(kind='bar',ax=axes[0,2]); axes[0,2].set_title('6')

df[8].plot(kind='bar',ax=axes[1,0]); axes[1,0].set_title('8')

df[10].plot(kind='bar',ax=axes[1,1]); axes[1,1].set_title('10')

plt.setp(axes, xticks=np.arange(len(observations)), xticklabels=map(str,observations),
        yticks=[0,1])

fig.tight_layout()

Plots

9
HimanAB

Essaye ça:

fig.delaxes(axes[1][2])

Une méthode beaucoup plus flexible pour créer des sous-tracés est la méthode fig.add_axes(). Les paramètres sont une liste de coordonnées rect: fig.add_axes ([x, y, xsize, ysize]). Les valeurs sont relatives à la taille du canevas, donc une taille x de 0,5 signifie que le sous-tracé a la moitié de la largeur de la fenêtre.

20
Johannes

Alternativement, en utilisant la méthode axesset_axis_off():

axes[1,2].set_axis_off()
5
Ketan

Si vous savez quel tracé supprimer, vous pouvez donner l'index et supprimer comme ceci:

axes.flat[-1].set_visible(False) # to remove last plot
1
Jaswanth Kumar