Plotly 时间序列多图

Plotly time series multiplots

我需要 plotly 方面的帮助 - 在每个子图中绘制多行时间序列交互式图表。我的数据如下所示:

import pandas as pd
df1 = pd.DataFrame(np.random.randint(100, size=(100,6)), columns=['A_red', 'A_blue', 'B_red', 'B_blue', 'C_red', 'C_blue'])

接下来我想做的是:

import plotly.express as px
fig1 = px.line(df, y=['A_red', 'A_blue'], color=['red', 'blue'])
fig2 = px.line(df, y=['B_red', 'B_blue'], color=['red', 'blue'])
fig3 = px.line(df, y=['C_red', 'C_blue'], color=['red', 'blue'])

figs = [fig1, fig2, fig3]
figs.show()

我无法在 spyder 中加载任何绘图(内联或在绘图选项卡中),还有如何将颜色映射到不同的线条?

谢谢

Spyder 不支持交互式图表。您有 2 个选项来显示绘图:在浏览器中显示它们,或将它们显示为静态图。要在浏览器中将它们呈现为可交互的:

import plotly.io as pio
pio.renderers.default = 'browser'

要在 Spyder 绘图窗格中将它们呈现为静态图表:

import plotly.io as pio
pio.renderers.default = 'svg'

您需要从 px.line() 调用中删除颜色参数,否则会引发错误。鉴于数据的格式设置方式,您将无法轻松使用颜色参数。要更改线条的颜色:

fig1 = px.line(df, y=['A_red', 'A_blue'])
fig1.data[0].line.color = 'green'
fig1.data[1].line.color = 'purple'
fig1.show()

不是你要的,而是为了得到

figs = [fig1, fig2, fig3]
figs.show()

要工作,您需要执行以下操作:

figs = [fig1, fig2, fig3]
for fig in figs:
    fig.show()

要在一个图中绘制所有 3 个图形,您首先需要将数据从宽数据转换为长数据:

df = pd.DataFrame(np.random.randint(100, size=(100,6)), 
                  columns=['A_red', 'A_blue', 'B_red', 'B_blue', 'C_red', 'C_blue'])
df['x'] = df.index
df_long = df.melt(id_vars='x', var_name='letter')
df_long['group'] = df_long.letter.str.split('_', expand=True)[1]
df_long['letter'] = df_long.letter.str.split('_', expand=True)[0]

然后您可以进行以下操作:

facet_fig = px.line(df_long, y='value', x='x', color='group', facet_row='letter')