我正在尝试使用plotly px/go 创建交互式绘图,但无法找到解决此问题的方法。我有一个看起来有点像这样的数据集:
实际数据有超过10k行。我想用绘图线图创建图表,其中 x= C 列(日期时间值) y= D 列
我正在尝试生成 ID 1, 2..., n 的图表,其中每个 ID 有 4 个来自 B 列的 4 个子 ID 的折线图。
我尝试了 px.line 但它没有正确显示。我还尝试创建一个 for 循环,它将生成 ID 1、2、3、... 直到 n 的图表,但没有成功。另一个想法是创建带有 ID 的字典作为单独的数据帧。我是情节新手,仍在尝试找出解决此问题的方法。任何帮助表示赞赏!
我理解你的问题是你希望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()