【问题标题】:Plotly time series multiplots绘制时间序列多图
【发布时间】:2022-01-10 03:09:19
【问题描述】:

我需要关于 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 中加载任何绘图(内联或绘图选项卡),我如何将颜色映射到不同的行?

谢谢

【问题讨论】:

    标签: python pandas plotly plotly-python


    【解决方案1】:

    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')
    

    【讨论】:

    • 嗨,Cazman,这解决了我的问题,只是多了一个问题:``` for figs in figs: ``` 仍然在 3 个单独的浏览器选项卡中绘制图表。如何让它加载到 1 个标签中?
    • 编辑描述了如何按字母刻面图。如果这是仪表板之类的一部分,您还可以在单​​个页面中呈现多个图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2016-09-13
    • 2019-05-04
    • 2019-12-02
    • 2023-03-25
    相关资源
    最近更新 更多