如何在plotly python中绘制每个ID有4个子ID线图的图表?

问题描述 投票:0回答:1

我正在尝试使用plotly px/go 创建交互式绘图,但无法找到解决此问题的方法。我有一个看起来有点像这样的数据集: Sample Data Structure

实际数据有超过10k行。我想用绘图线图创建图表,其中 x= C 列(日期时间值) y= D 列

我正在尝试生成 ID 1, 2..., n 的图表,其中每个 ID 有 4 个来自 B 列的 4 个子 ID 的折线图。

我尝试了 px.line 但它没有正确显示。我还尝试创建一个 for 循环,它将生成 ID 1、2、3、... 直到 n 的图表,但没有成功。另一个想法是创建带有 ID 的字典作为单独的数据帧。我是情节新手,仍在尝试找出解决此问题的方法。任何帮助表示赞赏!

python plotly plotly-python
1个回答
0
投票

我理解你的问题是你希望x轴为C列,y轴为D列,线条颜色为A列,线条类型为B列,所以我创建了代码。线条颜色是字母表,它是绘图中可用颜色最多的颜色。至于线条的破折号,有好几种,所以我以字典的形式设置了B列所需的类型。 A列循环过程中提取的数据框按A列中的值进行分组,每个组都可以根据图例的点击隐藏或显示。

import plotly.graph_objects as go
import plotly.express as px

colors24 = px.colors.qualitative.Alphabet

fig = go.Figure()

# dash style ("solid", "dot", "dash", "longdash", "dashdot", or "longdashdot")
dash_style = {'a': 'solid','b': 'dot','c': 'dash','d': 'longdash','f': 'dashdot'}

for i,a in enumerate(df['A'].unique()):
    dfa = df.query('A == @a')
    for b in df['B'].unique():
        dfb = dfa.query('B == @b') 
        fig.add_trace(go.Scatter(
            mode='lines',
            x=dfb['C'],
            y=dfb['D'],
            line=dict(color=colors24[i], dash=dash_style[b]),
            legendgroup='A'+str(i),
            name=str(a)))

fig.show()        

© www.soinside.com 2019 - 2024. All rights reserved.