Saltar al contenido

Gráfico de barras de Matplotlib elija el color si el valor es positivo vs el valor es negativo

Solución:

Crearía una columna ficticia para determinar si la observación es mayor que 0.

In [39]: data['positive'] = data['values'] > 0

In [40]: data
Out[40]: 
   values positive
a   -15.0    False
b    10.0     True
c     8.0     True
d    -4.5    False

[4 rows x 2 columns]

In [41]: data['values'].plot(kind='barh',
                             color=data.positive.map({True: 'g', False: 'r'}))

gráfico de barras con positivos en verde y negativos en rojo

Además, es posible que desee tener cuidado de no tener nombres de columna que se superpongan con los atributos de DataFrame. DataFrame.values dar la matriz numérica subyacente para un DataFrame. Tener nombres superpuestos le impide usar el df.<column name> sintaxis.

Si desea evitar agregar una columna, puede hacer la solución de TomAugspurger en un solo paso:

data['values'].plot(kind='barh',
                    color=(data['values'] > 0).map({True: 'g',
                                                    False: 'r'}))

gráfico de barras con positivos en verde y negativos en rojo

Definir

def bar_color(df,color1,color2):
    return np.where(df.values>0,color1,color2).T

luego

data.plot.barh(color=bar_color(data,'r','g'))

da

ingrese la descripción de la imagen aquí

También funciona para series de barras múltiples.

df=pd.DataFrame(np.random.randint(-10,10,(4,6)))
df.plot.barh(color=bar_color(df,'r','g'))

da

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *