web-dev-qa-db-fra.com

la figure de imshow () est trop petite

J'essaie de visualiser un tableau numpy en utilisant imshow () car il est similaire à imagesc () dans Matlab.

imshow(random.Rand(8, 90), interpolation='nearest')

La figure obtenue est très petite au centre de la fenêtre grise, alors que la majeure partie de l'espace est inoccupée. Comment puis-je définir les paramètres pour agrandir la figure? J'ai essayé figsize = (xx, xx) et ce n'est pas ce que je veux. Merci!

74
Ruofeng

Si vous ne donnez pas d'argument aspect à imshow, il utilisera la valeur de image.aspect dans votre matplotlibrc. La valeur par défaut pour cette valeur dans un nouveau matplotlibrc est equal. Donc, imshow tracera votre tableau avec des proportions égales.

Si vous n'avez pas besoin d'un aspect égal, vous pouvez définir aspect sur auto

imshow(random.Rand(8, 90), interpolation='nearest', aspect='auto')

ce qui donne le chiffre suivant

imshow-auto

Si vous voulez un format d'image égal, vous devez adapter votre figsize en fonction de l'aspect

fig, ax = subplots(figsize=(18, 2))
ax.imshow(random.Rand(8, 90), interpolation='nearest')
tight_layout()

ce qui vous donne:

imshow-equal

110
bmu

C'est étrange, ça marche vraiment pour moi:

from matplotlib import pyplot as plt

plt.figure(figsize = (20,2))
plt.imshow(random.Rand(8, 90), interpolation='nearest')

J'utilise le backend "MacOSX", en fait.

19
Nikolas

Je suis nouveau sur python aussi. Voici quelque chose qui ressemble à ce que vous ferez

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height]
axis('scaled')`

Je crois que cela décide de la taille de la toile.

2
toylas