Tengo algunos Pandas DataFrames que comparten la misma escala de valores, pero que tienen diferentes columnas e índices. Al invocar df.plot()
, obtengo imágenes de trama separadas. lo que realmente quiero es tenerlos a todos en la misma trama que las subtramas, pero desafortunadamente no puedo encontrar una solución a cómo y agradecería mucho alguna ayuda.
python
matplotlib
pandas
Jimmy C
fuente
fuente
.subplots()
devuelve diferentes sistemas de coordenadas dependiendo de las dimensiones de la matriz de subtramas que está creando. Entonces, si devuelve subtramas donde, por ejemplo,nrows=2, ncols=1
deberá indexar los ejes comoaxes[0]
yaxes[1]
. Ver stackoverflow.com/a/21967899/1569221IndexError: too many indices for array
.subplot()
se utilizan argumentos predeterminados para . Establezcasqueeze=False
forzar.subplot()
para devolver siempre unndarray
en cualquier caso de filas y columnas.Puedes ver e.gs. en la documentación que demuestra la respuesta de joris. También desde la documentación, también puede establecer
subplots=True
ylayout=(,)
dentro de laplot
función pandas :También puede usar el
fig.add_subplot()
que 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 las subtramas .fuente
subplots
ylayout
kwargs generarán múltiples gráficos SOLAMENTE para un solo marco de datos. Esto está relacionado, pero no es una solución para la pregunta de OP de trazar múltiples marcos de datos en un solo gráfico.layout=(df.shape[1], 1)
, por ejemplo).Puede usar el estilo familiar de Matplotlib llamando a
figure
ysubplot
, pero simplemente necesita especificar el eje actual usandoplt.gca()
. Un ejemplo:etc ...
fuente
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:
Con este código, puede trazar subtramas en cualquier configuración. Solo necesita definir el número de filas
nrow
y el número de columnasncol
. Además, debe hacer una lista de los marcos de datosdf_list
que desea trazar.fuente
count =+1
sinocount +=1
Puedes usar esto:
fuente
Es posible que no necesite usar Pandas en absoluto. Aquí hay una gráfica de matplotlib de frecuencias de gatos:
fuente
Basándose en la respuesta @joris anterior, si ya ha establecido una referencia a la subtrama, también puede usar la referencia. Por ejemplo,
fuente
Cómo crear múltiples gráficos a partir de un diccionario de marcos de datos con datos largos (ordenados)
Supuestos
cat
pueden estar superpuestas, pero todos los marcos de datos pueden no contener todos los valores decat
hue='cat'
Debido a que los marcos de datos se están iterando, no hay garantía de que los colores se asignen de la misma manera para cada gráfico
'cat'
valores únicos para todos los marcos de datosImportaciones y datos sintéticos
Crea mapeos de color y trama
fuente