que matrices linea grosor graficos graficas graficar dispersion diagrama coordenadas python matplotlib

python - matrices - Mejore el tamaño/espaciado de las subparcelas con muchas subparcelas en matplotlib



que es matplotlib (6)

Descubrí que subplots_adjust (hspace = 0.001) es lo que terminó funcionando para mí. Cuando uso el espacio = Ninguno, todavía hay espacio en blanco entre cada gráfico. Ponerlo en algo muy cercano a cero, sin embargo, parece forzarlos a alinearse. Lo que he cargado aquí no es el código más elegante, pero puedes ver cómo funciona el hspace.

import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as tic fig = plt.figure() x = np.arange(100) y = 3.*np.sin(x*2.*np.pi/100.) for i in range(5): temp = 510 + i ax = plt.subplot(temp) plt.plot(x,y) plt.subplots_adjust(hspace = .001) temp = tic.MaxNLocator(3) ax.yaxis.set_major_locator(temp) ax.set_xticklabels(()) ax.title.set_visible(False) plt.show()

Muy similar a esta pregunta, pero con la diferencia de que mi figura puede ser tan grande como debe ser.

Necesito generar un montón de parcelas apiladas verticalmente en matplotlib. El resultado se guardará utilizando Figsave y se verá en una página web, por lo que no me importa cuán alta sea la imagen final, siempre que las subparcelas estén espaciadas para que no se superpongan.

No importa qué tan grande permita que sea la figura, las subparcelas siempre parecen superponerse.

Mi código actualmente parece

import matplotlib.pyplot as plt import my_other_module titles, x_lists, y_lists = my_other_module.get_data() fig = plt.figure(figsize=(10,60)) for i, y_list in enumerate(y_lists): plt.subplot(len(titles), 1, i) plt.xlabel("Some X label") plt.ylabel("Some Y label") plt.title(titles[i]) plt.plot(x_lists[i],y_list) fig.savefig(''out.png'', dpi=100)


Podrías probar el subplot_tool ()

plt.subplot_tool()


Puede usar plt.subplots_adjust para cambiar el espaciado entre las subplots (source)

firma de llamada:

subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

Los significados de los parámetros (y los valores predeterminados sugeridos) son:

left = 0.125 # the left side of the subplots of the figure right = 0.9 # the right side of the subplots of the figure bottom = 0.1 # the bottom of the subplots of the figure top = 0.9 # the top of the subplots of the figure wspace = 0.2 # the amount of width reserved for blank space between subplots hspace = 0.2 # the amount of height reserved for white space between subplots

Los valores predeterminados reales son controlados por el archivo rc


Similar a tight_layout matplotlib ahora (a partir de la versión 2.2) proporciona contrained_layout . A diferencia de tight_layout , que puede llamarse en cualquier momento en el código para un solo diseño optimizado, constrained_layout es una propiedad que puede estar activa y optimizará el diseño antes de cada paso del dibujo.

Por lo tanto, debe activarse antes o durante la creación de la trama secundaria. Esto puede suceder como un argumento a la figure(contrained_layout=True) o subplots(constrained_layout=True) .

Ejemplo:

import matplotlib.pyplot as plt fig, axes = plt.subplots(4,4, constrained_layout=True) plt.show()

rcParams también se puede establecer a través de rcParams

plt.rcParams[''figure.constrained_layout.use''] = True

Vea la entrada de novedades y la contrained_layout


Trate de usar plt.tight_layout

Como un ejemplo rápido:

import matplotlib.pyplot as plt fig, axes = plt.subplots(nrows=4, ncols=4) fig.tight_layout() # Or equivalently, "plt.tight_layout()" plt.show()

Sin diseño apretado

Con diseño apretado


import matplotlib.pyplot as plt fig = plt.figure(figsize=(10,60)) plt.subplots_adjust( ... )

El método plt.subplots_adjust :

def subplots_adjust(*args, **kwargs): """ call signature:: subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) Tune the subplot layout via the :class:`matplotlib.figure.SubplotParams` mechanism. The parameter meanings (and suggested defaults) are:: left = 0.125 # the left side of the subplots of the figure right = 0.9 # the right side of the subplots of the figure bottom = 0.1 # the bottom of the subplots of the figure top = 0.9 # the top of the subplots of the figure wspace = 0.2 # the amount of width reserved for blank space between subplots hspace = 0.2 # the amount of height reserved for white space between subplots The actual defaults are controlled by the rc file """ fig = gcf() fig.subplots_adjust(*args, **kwargs) draw_if_interactive()

o

fig = plt.figure(figsize=(10,60)) fig.subplots_adjust( ... )

El tamaño de la imagen importa.

"He intentado desordenar con hspace, pero aumentarlo solo parece hacer que todos los gráficos sean más pequeños sin resolver el problema de superposición".

Por lo tanto, para hacer más espacio en blanco y mantener el tamaño de subparcela, la imagen total debe ser más grande.