Je fais un groupe de sous-intrigues (disons, 3 x 2) dans matplotlib, mais j'ai moins de 6 ensembles de données. Comment rendre le sous-tracé restant vide?
L'arrangement ressemble à ceci:
+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+
Cela peut durer plusieurs pages, mais sur la dernière page, il y a, par exemple, 5 jeux de données dans la zone 2,1 qui sera vide. Cependant, j'ai déclaré le chiffre comme suit:
cfig,ax = plt.subplots(3,2)
Ainsi, dans l'espace de la sous-intrigue 2,1, il y a un ensemble d'axes par défaut avec des graduations et des étiquettes. Comment puis-je rendre cet espace vide par programme et sans axes?
Vous pouvez toujours masquer les axes dont vous n'avez pas besoin. Par exemple, le code suivant transforme complètement les 6e axes:
import matplotlib.pyplot as plt
hf, ha = plt.subplots(3,2)
ha[-1, -1].axis('off')
plt.show()
et donne la figure suivante:
Alternativement, voir la réponse acceptée à la question Masquer le texte de l'axe dans les tracés matplotlib pour un moyen de conserver les axes mais de masquer toutes les décorations des axes (par exemple, les graduations et les étiquettes).
Un beaucoup amélioré interface de sous-intrigue a été ajouté à matplotlib depuis la première question posée. Ici, vous pouvez créer exactement les sous-tracés dont vous avez besoin sans masquer les extras. De plus, les sous-tracés peuvent s'étendre sur des lignes ou des colonnes supplémentaires.
import pylab as plt
ax1 = plt.subplot2grid((3,2),(0, 0))
ax2 = plt.subplot2grid((3,2),(0, 1))
ax3 = plt.subplot2grid((3,2),(1, 0))
ax4 = plt.subplot2grid((3,2),(1, 1))
ax5 = plt.subplot2grid((3,2),(2, 0))
plt.show()
Il est également possible de masquer un sous-tracé à l'aide de la méthode Axes.set_visible ().
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure()
data = pd.read_csv('sampledata.csv')
for i in range(0,6):
ax = fig.add_subplot(3,2,i+1)
ax.plot(range(1,6), data[i])
if i == 5:
ax.set_visible(False)
Serait-ce une option pour créer les sous-parcelles quand vous en avez besoin?
import matplotlib
matplotlib.use("pdf")
import matplotlib.pyplot as plt
plt.figure()
plt.gcf().add_subplot(421)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(422)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(423)
plt.fill([0,0,1,1],[0,1,1,0])
plt.suptitle("Figure Title")
plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
plt.savefig("outfig")