【问题标题】:Plotly: How to use scatter chart to display a multiIndex dataframe?Plotly:如何使用散点图显示 multiIndex 数据框?
【发布时间】:2021-03-21 03:03:07
【问题描述】:

我正在使用多索引数据框来绘制折线图。使用 Matplotlib 绘制图形时可以看到正确的结果,但使用 Plotly 散点图绘制时数据框显示错误的输出 - 为什么?

import pandas as pd
data = pd.DataFrame([
        ('Q1','Blue',100),
        ('Q1','Green',300),
        ('Q2','Blue',200),
        ('Q2','Green',350),
        ('Q3','Blue',300),
        ('Q3','Green',400),
        ('Q4','Blue',400),
        ('Q4','Green',450),
    ], 
    columns=['quarter', 'company', 'value']
)
data = data.set_index(['quarter', 'company']).value

data.unstack().plot(kind='bar', stacked=True)

上面的代码绘制了正确的图表。下面的代码也会生成正确的结果。

fig = go.Figure()
fig.add_trace(go.Scatter(x=sample.index, y=sample['Blue'], 
                         #mode='lines+markers', name='',
                         #line=dict(color=colors_list[1],width=2,) ,
                          
                        )
)

但我不知道如何在散点图中同时绘制蓝色和绿色?

示例:

fig = go.Figure()
fig.add_trace(go.Scatter(x=sample.index, y=sample, 
                         #mode='lines+markers', name='',
                         #line=dict(color=colors_list[1],width=2,) ,
                          
                        )
)

谁能帮助如何将蓝色和绿色绘制在一起?

【问题讨论】:

  • 在上面的代码中,我忘记添加以下内容。样本 = data.unstack(-1).head(5) 样本
  • 我的建议对你有什么效果?

标签: python pandas plotly jupyter plotly-python


【解决方案1】:

正如 vestland 在他的好答案中指出的那样,您可以使用 Plotly Express 来简单地做到这一点。

但是,如果您不想使用 Plotly Express,则必须将绘图(迹线)添加到图形并配置图形键,如下所示。

import plotly.graph_objects as go

fig = go.Figure()
fig.add_trace(go.Scatter(x=sample.index, y=sample['Green'], mode='markers', name = 'Green', marker_color = 'Green'))
fig.add_trace(go.Scatter(x=sample.index, y=sample['Blue'], mode='markers', name = 'Blue', marker_color = 'Blue'))
fig.update_layout(title="The Title", xaxis_title="Quarter", yaxis_title="Value", legend_title="Company")

给予

【讨论】:

    【解决方案2】:

    您的问题有点不清楚,但我假设您的主要目标是显示一组四分之一的值,其中值分为两组 ['blue', 'red']。 (我不太明白你为什么要一个散点图但显示一个matplotlib条形图......)。无论如何,如果我是对的,那么您的用例非常适合 plotly.express,特别是 px.scatter,下面的 sn-p 将使用它生成下图。

    import pandas as pd
    import plotly.graph_objects as go
    import plotly.express as px
    
    data = pd.DataFrame([
            ('Q1','Blue',100),
            ('Q1','Green',300),
            ('Q2','Blue',200),
            ('Q2','Green',350),
            ('Q3','Blue',300),
            ('Q3','Green',400),
            ('Q4','Blue',400),
            ('Q4','Green',450),
        ], 
        columns=['quarter', 'company', 'value']
    )
    
    fig = px.scatter(data, x = 'quarter', y = 'value',
                     color = 'company',
                     color_discrete_sequence=['Blue', 'Green'])
    fig.show()
    

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 2020-07-27
      • 2022-01-13
      • 2021-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多