Come si cambia la dimensione delle figure disegnate con matplotlib? [python]


Answers

Se hai già ottenuto la figura creata puoi fare rapidamente:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

Per propagare la modifica della dimensione in una finestra gui esistente aggiungere forward=True

fig.set_size_inches(18.5, 10.5, forward=True)
Question

Come si cambia la dimensione della figura disegnata con matplotlib?




Prova un semplice codice come segue:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

È necessario impostare la dimensione di figura prima di tracciare.




USO di plt.rcParams

C'è anche questa soluzione se si desidera modificare la dimensione senza utilizzare l'ambiente di figura. Quindi, se si utilizza plt.plot() per esempio.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

Questo è molto utile quando si traccia in linea (ad es. Con IPython Notebook).




Se stai cercando un modo per cambiare la dimensione di figure in Pandas, puoi fare ad esempio:

df['some_column'].plot(figsize=(10, 5))

Dove df è un framework dati Pandas. Se si desidera modificare le impostazioni predefinite, è possibile effettuare le seguenti operazioni:

import pandas as pd

# update 'default' stylesheet
pd.tools.plotting.mpl_stylesheet['figure.figsize'] = (10.0, 5.0)

# start using the 'default' style sheet (not used by default)
pd.set_option('display.mpl_style', 'default')



Questo funziona bene per me:

from matplotlib import pyplot as plt
F = gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True)#Set forward to True to resize window along with plot in figure.
plt.show() #or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array

Questo potrebbe anche aiutare: http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html




Questo ridimensiona la cifra immediatamente dopo la tracciatura (almeno utilizzando Qt4Agg / TkAgg - ma non MacOSX - con matplotlib 1.4.0):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)