Python中的散点分类散点图/线图

问题描述 投票:0回答:1

第一次在这里发布。最近,我被介绍给seaborn和密谋python库。他们产生了一些很棒的情节。

我一直在努力地在阴暗的地方重建一个海洋的阴谋。我有一个数据框,看起来像下面的示例:Example data set

在seaborn中,如果我使用以下代码:

sns.catplot(data=test, x='time', y='y', hue='group', kind='point')

我得到了一张很棒的图,其中的组已自动平均,并画出两条带误差线的线。我的组'a'和'b'的图表上有两条线,显示每个时间点的平均值:Seaborn example graph

如果我尝试使用以下方法重复地复制此内容:

px.line(test,x='time', y='y', color='group')

我得到每个组的单独行(三个代表'a',三个代表'b'),如下所示:plotly example

是否可以用散点图而不是单个点标出平均值。我无法弄清楚如何像seaborn一样绘制每个组的平均值。

任何帮助将不胜感激。

希望这很有道理。

谢谢

python plotly data-visualization seaborn
1个回答
0
投票

使用散点图,您需要使用transformations,在这种情况下,需要使用几个,一个将它们分组,然后一个来创建平均值(带有合计)。

例如,带有一些数据:

import numpy as np
import pandas as pd

# some data
N=24
ds = pd.DataFrame({'group': np.random.choice(['a','b'],N),
                   'time': np.random.randint(0,6,N),
                   'y': np.random.randint(1,15,N)})
ds.sort_values(by=['group', 'time'],inplace=True)

然后您可以使用plotly:

import plotly.io as pio

data = [dict(
  type = 'scatter', x = ds.time, y = ds.y,
  mode = 'lines+markers',
  transforms = [
      dict(
        type = 'groupby',
        groups = ds.group),
      dict(
        type = 'aggregate',
        groups = ds.time,
        aggregations = [dict(target = 'y', func = 'avg')]),
    ]
)]

fig_dict = dict(data=data)
pio.show(fig_dict, validate=False)
© www.soinside.com 2019 - 2024. All rights reserved.