Pergunta

Existe uma maneira para redimensionar automaticamente um número de parcelas devidamente apto contidas em uma imagem matplotlib / Pylab?

Estou criando HeatMap (sub) parcelas que diferem entre si em relação de aspecto de acordo com os dados utilizados.

Eu percebo que eu poderia calcular a relação de aspecto e manualmente configurá-lo, mas certamente há uma maneira mais fácil?

Foi útil?

Solução

Use bbox_inches = 'apertado'

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)

fig = plt.figure(figsize=(15,5),facecolor='w') 
ax = fig.add_subplot(111)
ax.imshow(X, cmap=cm.jet)

plt.savefig("image.png",bbox_inches='tight',dpi=100)

... só funciona quando guardar imagens, porém, não mostrando a eles.

Outras dicas

apenas uso aspecto = 'auto' quando você chamar imshow

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)
plt.imshow(X, aspect='auto')

funciona mesmo que seja apenas para mostrar e não poupar

Outra maneira de fazer isso é usando o matplotlib tight_layout função

import matplotlib.pyplot as plt
fig,(ax) = plt.subplots(figsize=(8,4), ncols=1)
data = [0,1,2,3,4]
ax.plot(data)
fig.tight_layout()
fig.show()

Você quer dizer alterar o tamanho da imagem ou a área que é visível dentro de um enredo?

O tamanho de uma figura pode ser definido com Figure.set_figsize_inches . Também a SciPy Cookbook tem uma entrada em mudar o tamanho da imagem que contém uma seção sobre múltiplas imagens por figura.

Também dê uma olhada neste .

você pode tentar usar eixo ( 'escalado')

import matplotlib.pyplot as plt
import numpy

#some dummy images
img1 = numpy.array([[.1,.2],[.3,.4]]) 
img2 = numpy.array([[.1,.2],[.3,.4]])

fig,ax = plt.subplots()
ax.imshow(img1,extent=[0,1,0,1])
ax.imshow(img2,extent=[2,3,0,1])
ax.axis('scaled') #this line fits your images to screen 
plt.show()

Também é possível usar ax.autoscale com machado objeto

ax.autoscale(enable=True) 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top