python - 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')
解决方案
没有任何px.area
属性可以直接为您提供单一颜色。但这不应该阻止你。只需使用:
fig.for_each_trace(lambda trace: trace.update(fillcolor = trace.line.color))
... 要得到:
...而不是默认结果:
完整代码:
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()
一些细节:
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'},
在这里,您只能看到这'line': {'color': '#636efa'}
一点,而且 fillcolor 无处可寻无疑会有点令人困惑。但是如果你使用fig.full_figure_for_development
,你可以看到实际上传递给 javascript 的填充颜色是'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)',
这正是您在运行时要覆盖的内容:
fig.for_each_trace(lambda trace: trace.update(fillcolor = trace.line.color))
推荐阅读
- asp.net-core - ASP.NET Core 不存在的静态文件请求解析为回退
- c++ - const T& rf = lvalue of T 是身份转换吗?
- c# - 从 List.FindAll 创建新的派生类对象
- python - RuntimeError:预期的标量类型 Long 但在损失中找到 Int = 标准(输出,y_train)
- jquery - 我可以突出显示特定的日子吗?比如 datepicker js 中的所有星期一星期二等
- python - 检查列表中是否存在至少一个字符串
- vue.js - 我们如何使用 vuetify-data-table 根据屏幕截图进行设计
- flutter - 将获取请求正文同步分配给变量 - Dart
- google-chrome - 加载网站时出现 HTTP2 协议错误
- biztalk - BizTalk 2013 R2 - 基于速率的泛滥消息限制