Tengo un Pandas DataFrame con valores positivos y negativos como un gráfico de barras. Quiero trazar los colores positivos ‘verde’ y los valores negativos ‘rojo’ (muy originales … jajaja). No estoy seguro de cómo pasar si> 0 ‘verde’ o <0 'rojo'?
data = pd.DataFrame([[-15], [10], [8], [-4.5]],index=['a', 'b', 'c', 'd'],columns=['values']) data.sort().plot(kind='barh')
Yo 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: 'r', False: 'k'})) Out[41]:
Además, es posible que desee tener cuidado de no tener nombres de columnas que se superpongan con los atributos de DataFrame. DataFrame.values
proporciona la matriz numpy subyacente para un DataFrame. Tener nombres superpuestos le impide utilizar la syntax df.
.