Estoy utilizando el siguiente código para trazar un gráfico de barras:
import matplotlib.pyplot as pls
my_df.plot(x='my_timestampe', y='col_A', kind='bar')
plt.show()
El gráfico funciona bien. Sin embargo, quiero mejorar el gráfico por tener 3 columnas: 'col_A', 'col_B', y 'col_C' todos en la trama. Al igual que en la figura de ejemplo a continuación:
Me gustaría que el col_A
se mostrara en azul por encima del eje x, el col_B
en rojo por debajo del eje x, y el col_C
en verde por encima del eje x. ¿Es esto posible en matplotlib? ¿Cómo puedo hacer cambios para trazar las tres columnas? Gracias.
Puede trazar varias columnas a la vez proporcionando una lista de nombres de columnas al argumento y
de plot
.
df.plot(x="X", y=["A", "B", "C"], kind="bar")
Esto producirá un gráfico donde las barras están una al lado de la otra.
Para que se superpongan, tendría que llamar a plot
varias veces, y el suministro de los ejes para trazar como un argumento ax
a la trama.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
y = np.random.rand(10,4)
y[:,0]= np.arange(10)
df = pd.DataFrame(y, columns=["X", "A", "B", "C"])
ax = df.plot(x="X", y="A", kind="bar")
df.plot(x="X", y="B", kind="bar", ax=ax, color="C2")
df.plot(x="X", y="C", kind="bar", ax=ax, color="C3")
plt.show()
Aunque la respuesta aceptada funciona correctamente, desde v0.21.0rc1 da un aviso
Advertencia de usuario: Pandas doesn't allow columns to be created via a new attribute name
En su lugar, se puede hacer
df[["X", "A", "B", "C"]].plot(x="X", kind="bar")