Plotly:如何通过 variable/labels 在 plotly.graph_objects 中定义颜色(饼图和条形图)
Plotly: How to define colors by variable/labels in plotly.graph_objects (Pie & Bar)
我是 plotly 的新手,下面有两个不同的图 (go.Pie & go.Bar),我想为每种类型 (a: g) 标签分配一种颜色,如下所示color_discrete_map。如何将它们包含在 go.pie 和 go.bar 的代码中?谢谢
数据框:
color_discrete_map = {'a':'rgb(42,9,4)',
'b':'rgb(111,203,209)',
'c':'rgb(55,165,172),',
'd':'rgb(29,127,136)',
'e':'rgb(2,84,92)',
'f':'rgb(4,37,42)'}
unit_mix_pie.add_trace(go.Pie(labels=df.index, values=df['type']), row=1, col=1)
unit_mix_bar.add_trace(go.Bar(x=df.index, y=round(df['type'],0), marker=dict(
color=px.colors.qualitative.Pastel2, color_discrete_map=color_discrete_map,
line=dict(color='#000000', width=2)
)), row=1, col=1)
我对 unit_mix_pie
和 unit_mix_bar
是只有一行和一列的子图这一点感到有点困惑 - 你可以将这些对象中的每一个定义为 plotly graph_object 或情节表达的数字。
如果您使用 plotly express 定义 unit_mix_pie
,您可以直接将您的 color_discrete_map
作为参数传递:
import pandas as pd
import plotly.express as px
df = pd.DataFrame(data={'type':list('abcdefg'), 'no':[50,100,200,300,400,500,600]})
## added another color for the type 'g'
color_discrete_map = {'a':'rgb(42,9,4)',
'b':'rgb(111,203,209)',
'c':'rgb(55,165,172)',
'd':'rgb(29,127,136)',
'e':'rgb(2,84,92)',
'f':'rgb(4,37,42)',
'g':'purple'}
unit_mix_pie = px.pie(df, values='no', names='type', color='type', color_discrete_map=color_discrete_map)
unit_mix_pie.show()
然后您可以将 unit_mix_bar
定义为 plotly graph_object 以单独使用轨迹添加条形图,将它们的类型映射到它们的颜色(我借用 ):
import plotly.graph_objects as go
## add the bars one at a time
unit_mix_bar=go.Figure()
for t in df['type'].unique():
dfp = df[df['type']==t]
unit_mix_bar.add_traces(go.Bar(x=dfp['no'], y = dfp['type'], name=t,
marker_color=color_discrete_map[t]))
unit_mix_bar.show()
我是 plotly 的新手,下面有两个不同的图 (go.Pie & go.Bar),我想为每种类型 (a: g) 标签分配一种颜色,如下所示color_discrete_map。如何将它们包含在 go.pie 和 go.bar 的代码中?谢谢
数据框:
color_discrete_map = {'a':'rgb(42,9,4)',
'b':'rgb(111,203,209)',
'c':'rgb(55,165,172),',
'd':'rgb(29,127,136)',
'e':'rgb(2,84,92)',
'f':'rgb(4,37,42)'}
unit_mix_pie.add_trace(go.Pie(labels=df.index, values=df['type']), row=1, col=1)
unit_mix_bar.add_trace(go.Bar(x=df.index, y=round(df['type'],0), marker=dict(
color=px.colors.qualitative.Pastel2, color_discrete_map=color_discrete_map,
line=dict(color='#000000', width=2)
)), row=1, col=1)
我对 unit_mix_pie
和 unit_mix_bar
是只有一行和一列的子图这一点感到有点困惑 - 你可以将这些对象中的每一个定义为 plotly graph_object 或情节表达的数字。
如果您使用 plotly express 定义 unit_mix_pie
,您可以直接将您的 color_discrete_map
作为参数传递:
import pandas as pd
import plotly.express as px
df = pd.DataFrame(data={'type':list('abcdefg'), 'no':[50,100,200,300,400,500,600]})
## added another color for the type 'g'
color_discrete_map = {'a':'rgb(42,9,4)',
'b':'rgb(111,203,209)',
'c':'rgb(55,165,172)',
'd':'rgb(29,127,136)',
'e':'rgb(2,84,92)',
'f':'rgb(4,37,42)',
'g':'purple'}
unit_mix_pie = px.pie(df, values='no', names='type', color='type', color_discrete_map=color_discrete_map)
unit_mix_pie.show()
然后您可以将 unit_mix_bar
定义为 plotly graph_object 以单独使用轨迹添加条形图,将它们的类型映射到它们的颜色(我借用
import plotly.graph_objects as go
## add the bars one at a time
unit_mix_bar=go.Figure()
for t in df['type'].unique():
dfp = df[df['type']==t]
unit_mix_bar.add_traces(go.Bar(x=dfp['no'], y = dfp['type'], name=t,
marker_color=color_discrete_map[t]))
unit_mix_bar.show()