首页 > 解决方案 > 我们如何为 Plotly 条形图指定颜色?

问题描述

我有几行代码可以创建一个很棒的条形图。

import plotly.express as px
fig = px.bar(df, x="site_name", y="value", color="variable", title="2019 & 2020 Revenue vs. Expenses")
fig.show()

这是一些示例数据。

# Import pandas library 
import pandas as pd 
  
# initialize list of lists 
data = [['14', '20 Hudson Yards_IB', 'revenue', '2651324.42'], 
        ['5', '5 Camden Yards', 'revenue', '2772115.61'],
        ['12', 'PHO_SUNS', 'revenue', '2818249.28'],
        ['87', 'OSUMC--MAIN', 'expense', '4300628.21'],
        ['7', 'DA STADIUM', 'expense', '6452307.48'],
        ['99', '50 Midtown East', 'expense', '3534523.12']] 
  
# Create the pandas DataFrame 
df_result = pd.DataFrame(data, columns = ['index', 'site_name', 'variable', 'value']) 
# print dataframe. 
df_result

结果:

     index      site_name              variable       value
0    14         20 Hudson Yards_IB     revenue        2651324.42
1    5          5 Camden Yards         revenue        2772115.61
2    12         PHO_SUNS               revenue        2818249.28
3    87         OSUMC--MAIN            expense        4300628.21
4    7          DA STADIUM             expense        6452307.48
5    99         50 Midtown East        expense        3534523.12

该图表几乎正是我想要的,但我试图为两个变量获得两种特定的颜色。一个变量是“收入”,一个变量是“费用”。现在,使用上面显示的默认代码,我的图表是红色的收入和蓝色的支出。我真正想做的是将“收入”设为绿色,将“费用”设为红色。我该如何控制这个?

标签: pythonpython-3.xplotly

解决方案


使用color_discrete_sequenceand 指定顺序,使用category_orders

fig = px.bar(df, x="site_name", y="value", color="variable", 
             color_discrete_sequence=["green","red"], 
             category_orders={"variable":["Revenue","Expenses"]}, 
             title="2019 & 2020 Revenue vs. Expenses")

或使用color_discrete_map

fig = px.bar(df, x="site_name", y="value", color="variable", 
             color_discrete_map={"Revenue": "green", "Expenses":"red"}, 
             category_orders={"variable":["Revenue","Expenses"]}, 
             title="2019 & 2020 Revenue vs. Expenses")

推荐阅读