绘图条形图 - 根据正/负值更改颜色 - python

Ben*_*n H 2 python plotly

我有以下代码绘制条形图(1 个系列),但如果“净”值为正,我需要将条着色为蓝色,如果为负,则将条着色为红色:

import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame({
     'Net':[15,20,-10,-15], 
     'Date':['07/14/2020','07/15/2020','07/16/2020','07/17/2020']
})

df['Date'] = pd.to_datetime(df['Date'])
fig = go.Figure(data=[go.Bar(name='Net', x=df['Date'], y=df['Net'])])
fig.update_layout(barmode='stack')
fig.show()
Run Code Online (Sandbox Code Playgroud)

rpa*_*nai 5

您可以在此处查看文档。完整代码如下

import pandas as pd
import plotly.graph_objects as go
import numpy as np

# Data

df = pd.DataFrame({
     'Net':[15,20,-10,-15], 
     'Date':['07/14/2020','07/15/2020','07/16/2020','07/17/2020']
})

df['Date'] = pd.to_datetime(df['Date'])

## here I'm adding a column with colors
df["Color"] = np.where(df["Net"]<0, 'red', 'green')

# Plot
fig = go.Figure()
fig.add_trace(
    go.Bar(name='Net',
           x=df['Date'],
           y=df['Net'],
           marker_color=df['Color']))
fig.update_layout(barmode='stack')
fig.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 这非常有效,你应该给自己更多的信任:我不会从文档中提取这个。`np.where()` 映射方法很棒。 (3认同)