第一次在这里发布。最近,我被介绍给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一样绘制每个组的平均值。
任何帮助将不胜感激。
希望这很有道理。
谢谢
使用散点图,您需要使用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)