繁体   English   中英

Plotly:如何使用散点图显示多索引 dataframe?

[英]Plotly: How to use scatter chart to display a multiIndex dataframe?

我正在使用多索引数据框来 plot 折线图。 I can see the correct result when I plot the graph using Matplotlib but the data frame shows the wrong output when plotted using Plotly scatter charts- why?

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

但我不知道如何同时在散点 plot 中同时使用 plot 蓝色和绿色?

例子:

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

谁能帮助如何将蓝色和绿色 plot 结合在一起?

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

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

在此处输入图像描述

正如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")

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM