J'ai une figure matplotlib avec deux sous-figures, l'une au-dessus de l'autre. Je produis un ensemble de figures similaires, mais je veux seulement les axes, les étiquettes, les titres etc. sur le premier de l'ensemble. Je souhaite ensuite insérer ces éléments dans un document l'un à côté de l'autre afin que les images de sous-repères soient toutes alignées et aient la même taille. Le problème que j'ai, c'est que lorsque je désactive la grille, les axes, la barre de couleurs, etc., les images des sous-placettes se développent pour remplir l'espace précédemment occupé par le texte/les graduations.matplotlib ne redimensionne pas l'image après avoir enlevé l'axe et la barre de couleurs
Existe-t-il un moyen de supprimer les étiquettes de mes axes mais de garder les images de la même taille (par exemple peut-être que matplotlib 'pense' il y a quelque chose mais l'affiche)? J'ai essayé d'insérer des titres vides en utilisant
plt.xlabel('')
mais cela ne fonctionne pas, et il n'y a pas de méthode similaire pour remplacer les axes. Vous pouvez également spécifier la taille et l'emplacement des sous-figures afin que leurs images soient fixes, qu'elles aient ou non des axes. Je souhaite que les images restent les mêmes lorsque les variables «colorbar» et «grid» sont définies sur «off», au lieu de devenir plus grandes pour remplir l'espace blanc.
Exemple de code:
import numpy as np
import matplotlib.pyplot as plt
filename = 'outputimage.png'
grid = 'on'
colorbar = 'on'
r = np.linspace(0,1.0,11)
z = np.linspace(0,1.0,11)
data1 = np.zeros([10,10])
data2 = np.zeros([10,10])
for i in range(10):
for j in range(10):
data1[i,j] = r[i]*z[j]
data2[i,j] = -r[i]*z[j]
R, Z = np.meshgrid(r, z)
fig = plt.figure(1,facecolor="white",figsize=(3.5,10),dpi=200)
plt.subplot(211)
ax = plt.gca()
im11 = ax.pcolormesh(R, Z, data1)
ax.set_aspect('equal',adjustable='box')
if grid == 'on':
plt.axis('on')
plt.xlabel(r'r')
plt.ylabel(r'z')
plt.title('data1')
else:
plt.axis('off')
plt.xlabel(' ')
plt.ylabel(' ')
plt.title(' ')
if colorbar == 'on':
CBI = plt.colorbar(im11, orientation='vertical')
plt.subplot(212)
ax = plt.gca()
im21 = ax.pcolormesh(R, Z, data2)
ax.set_aspect('equal',adjustable='box')
plt.xlabel(r'r')
plt.ylabel(r'z')
plt.axis('off')
if colorbar == 'on':
CB = plt.colorbar(im21, orientation='vertical')
if grid == 'on':
plt.title('data2')
else:
plt.title(' ')
plt.tight_layout(h_pad=2.0)
plt.savefig(filename)
qui produit: when colorbar and grid set 'on' when colorbar and grid set 'off' wheras Je veux la deuxième image soit identique à la première, juste sans le colorbar et le texte. NB - J'utilise matplotlib2tikz s'il y a un moyen de le faire en utilisant ceci?
Pouvez-vous fournir un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve)? – DavidG
L'ai fait (voir ci-dessus). – FluidFox
@FluidFox Vous n'avez pas: 'FileNotFoundError: [Errno 2] Aucun fichier ou répertoire de ce type: 'output.0008''. D'ailleurs votre code ne ressemble pas à "minimal". – Goyo