Cómo trazar múltiples marcos de datos en subtramas

Resuelto Jimmy C asked hace 10 años • 10 respuestas

Tengo algunos Pandas DataFrames que comparten la misma escala de valores, pero tienen diferentes columnas e índices. Al invocar df.plot(), obtengo imágenes de trama separadas. Lo que realmente quiero es tenerlos todos en la misma trama como subtramas, pero desafortunadamente no logro encontrar una solución y agradecería mucho un poco de ayuda.

Jimmy C avatar Mar 18 '14 22:03 Jimmy C
Aceptado

Puede crear manualmente las subtramas con matplotlib y luego trazar los marcos de datos en una subtrama específica usando la axpalabra clave. Por ejemplo para 4 subtramas (2x2):

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=2)

df1.plot(ax=axes[0,0])
df2.plot(ax=axes[0,1])
...

Aquí axeshay una matriz que contiene los diferentes ejes de la subtrama, y ​​puede acceder a una simplemente indexando axes.
Si desea un eje x compartido, puede sharex=Trueproporcionarlo plt.subplots.

joris avatar Mar 18 '2014 15:03 joris

Puedes ver p.e. en la documentación que demuestra la respuesta de joris. Además, desde la documentación, también puedes configurar subplots=Truey dentro de la función layout=(,)pandas :plot

df.plot(subplots=True, layout=(1,2))

También puede usar fig.add_subplot()el cual toma parámetros de cuadrícula de subtrama como 221, 222, 223, 224, etc., como se describe en la publicación aquí . En este cuaderno de ipython se pueden ver buenos ejemplos de tramas en el marco de datos de pandas, incluidas subtramas .

sedeh avatar Jun 04 '2015 15:06 sedeh

Puede trazar múltiples subtramas de múltiples marcos de datos de pandas usando matplotlib con un simple truco de hacer una lista de todos los marcos de datos. Luego, use el bucle for para trazar subtramas.

Código de trabajo:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# dataframe sample data
df1 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df2 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df3 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df4 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df5 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])
df6 = pd.DataFrame(np.random.rand(10,2)*100, columns=['A', 'B'])

#define number of rows and columns for subplots
nrow=3
ncol=2

# make a list of all dataframes 
df_list = [df1 ,df2, df3, df4, df5, df6]
fig, axes = plt.subplots(nrow, ncol)

# plot counter
count=0
for r in range(nrow):
    for c in range(ncol):
        df_list[count].plot(ax=axes[r,c])
        count+=1

ingrese la descripción de la imagen aquí

Con este código puede trazar subtramas en cualquier configuración. Debe definir el número de filas nrowy el número de columnas ncol. Además, debe hacer una lista de los marcos de datos df_listque desea trazar.

Dr. Arslan avatar Jun 23 '2019 13:06 Dr. Arslan