为了账号安全,请及时绑定邮箱和手机立即绑定

Plotly express 折线图 - 获取默认颜色

Plotly express 折线图 - 获取默认颜色

湖上湖 2022-12-20 09:58:42
我有一个多元时间序列的数据框,为此我创建了一个交互式 plotly express plot。我在字典指定的特定位置添加垂直线,每条线都与一个时间序列相关联,并希望将线颜色设置为与相应变量的颜色一致。本质上,在下图中,每个垂直段都可以用 Fp1 或 Fp2 之一标识,我想相应地将其着色为红色或黑色:首先我绘制数据框,其中 X 是我的时间序列矩阵,plotly.express 已导入为 px,pandas 导入为 pd,channels=['Fp1','Fp2']:df=pd.DataFrame(X,columns=channels)df['id'] = df.indexdf = pd.melt(df, id_vars='id', value_vars=df.columns[:-1])fig = px.line(df, x='id', y='value', color='variable',labels = {'id':'time (20K~100 sec)', 'value':'millivolts','variable':'channel'},title='Patient')随后的计算产生一个字典,HFOs,其中每个键对应的是我的两个通道之一,每个值是一个时间列表,例如某种形式HFOs={'Fp1':[500,....,10500],'Fp2':[800,...11000]}然后我创建了我的线条并将它们添加到图中:for channel,times in HFOs.items():    for t in times:                fig.add_shape(type='line',yref="y",xref="x",        x0=t,y0=df['value'].min()*1.2,x1=t,y1=df['value'].max()*1.2,line=dict(color='black',         width=.25))        fig.add_trace(go.Scatter(x=[t],y=         [df['value'].max()*1.5],mode='text',showlegend=False))    fig.show()这将创建如上所示的图像。如何修改 line=dict(color='black',width=.25) 以将颜色更改为我想要的颜色?我希望垂直线有时 [500,....,10500] 是蓝色,有时 [800,...11000] 是红色。(当然,以后会有更多的渠道。)我尝试用“变量”替换“黑色”,但这并不奇怪,只是导致出现错误消息。我觉得必须有一种非常简单的方法来实现我的目标。
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

很酷的问题。可能有更好的解决方案,但这是我找到的解决方案。用以下代码替换创建垂直线的代码:


# fetch the colors of the traces from the figure. 

colors = [trace.line["color"] for trace in fig.data]


for inx, (channel,times) in enumerate(HFOs.items()):

    for t in times:        

        fig.add_shape(type='line',yref="y",xref="x",

        x0=t,y0=df['value'].min()*1.2,x1=t,y1=df['value'].max()*2,

                      line=dict(color=colors[inx], width=3))

fig.show()

结果图如下所示(随机数据,使垂直线更宽以提高可见性):

//img1.sycdn.imooc.com//63a117020001be0619401087.jpg

获取默认颜色列表的另一种方法是使用

px.colors.qualitative.Plotly,它会生成一个包含 10 个十六进制颜色代码的列表。我的理解是这些颜色将用于前 10 个系列,然后再次用于轨迹 11-20 等。


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 296 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号