Ale*_*lex 3 python colors plotly
您好,我尝试弄清楚如何在每个国家/地区仅使用一种颜色 - 填充颜色。以下示例给出了每个国家/地区的透明颜色和深色颜色的混合。我希望只有一种颜色。感谢帮助
import plotly
#import plotly.graph_objects as go
import plotly.express as px
df = px.data.gapminder()
fig = px.area(df, x="year", y="pop", color="country",
groupnorm='fraction')
plotly.io.write_image(fig, file='areatest.png', format='png')
Run Code Online (Sandbox Code Playgroud)
没有任何px.area
属性可以直接为您提供单一颜色。但这不应该阻止你。只需使用:
fig.for_each_trace(lambda trace: trace.update(fillcolor = trace.line.color))
Run Code Online (Sandbox Code Playgroud)
... 要得到:
...而不是默认结果:
import plotly
import plotly.express as px
df = px.data.gapminder()
df = df[df['continent']=='Americas']
fig = px.area(df, x="year", y="pop", color="country",
groupnorm='fraction')
fig.for_each_trace(lambda trace: trace.update(fillcolor = trace.line.color))
fig.show()
Run Code Online (Sandbox Code Playgroud)
px.area
将为与参数关联的每条线分配一种颜色color
,然后将该颜色的部分透明版本应用于相应的区域/填充。如果运行,fig.show
您可以检查第一类别的颜色:
Scatter({
'fillcolor': '#636efa',
'groupnorm': 'fraction',
'hovertemplate': 'country=Argentina<br>year=%{x}<br>pop=%{y}<extra></extra>',
'legendgroup': 'Argentina',
'line': {'color': '#636efa'},
Run Code Online (Sandbox Code Playgroud)
在这里你只能看到这一点'line': {'color': '#636efa'}
,毫无疑问,填充颜色无处可寻会有点令人困惑。但如果你使用fig.full_figure_for_development
,你可以看到实际上传递给 JavaScript 的 fillcolor 是'rgba(99, 110, 250, 0.5)'
:
Scatter({
'connectgaps': False,
'error_x': {'visible': False},
'error_y': {'visible': False},
'fill': 'tonexty',
'fillcolor': 'rgba(99, 110, 250, 0.5)',
Run Code Online (Sandbox Code Playgroud)
这正是你运行时要覆盖的内容:
fig.for_each_trace(lambda trace: trace.update(fillcolor = trace.line.color))
Run Code Online (Sandbox Code Playgroud)