gpt4 book ai didi

python - Altair 分层多面图表上的滚动平均值

转载 作者:行者123 更新时间:2023-12-02 19:33:28 26 4
gpt4 key购买 nike

我成功地让图层在多面图表中工作,并让滚动平均值在分层图表中工作。我现在想将两者结合起来,即在分层多面图表中具有滚动平均值。

直观地将两者结合起来会给我一个错误 -

Javascript Error: Cannot read property 'concat' of undefined
This usually means there's a typo in your chart specification. See the javascript console for the full traceback.

代码(给出上述错误):

# Data Preparation
df = pd.read_csv('https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv')
idf = df[df['Country/Region'] == 'India']
idf = idf[df.columns[4:]]
idf = idf.T
idf = idf.reset_index()
idf.columns = ['day', 'case']
idf['country'] = 'india'

gdf = df[df['Country/Region'] == 'Germany']
gdf = gdf[df.columns[4:]]
gdf = gdf.T
gdf = gdf.reset_index()
gdf.columns = ['day', 'case']
gdf['country'] = 'germany'

fdf = pd.concat([idf,gdf])

# Charting
a = alt.Chart().mark_bar(opacity=0.5).encode(
x='day:T',
y='case:Q'
)

c = alt.Chart().mark_line().transform_window(
rolling_mean='mean(case:Q)',
frame=[-7, 0]
).encode(
x='day:T',
y='rolling_mean:Q'
)

alt.layer(a, c, data=fdf).facet(alt.Column('country', sort=alt.EncodingSortField('case', op='max', order='descending')))

如果您删除 transform_window 并将 y='rolling_mean:Q' 替换为 y='case:Q',您将获得分层的多面图表。我想要的是这张图表的 7 天滚动平均值。

最佳答案

您应该用以下内容替换您的窗口转换:

.transform_window(
rolling_mean='mean(case)',
frame=[-7, 0],
groupby=['country']
)

您的原始转换存在两个问题:

  • 类型简写仅用于编码,从不用于转换。当你写mean(case:Q)时,您指定了名为 "case:Q" 的字段的滚动平均值,不存在。

  • 由于您是按国家/地区分面,因此在计算滚动平均值时需要按国家/地区进行分组。

结果如下所示: enter image description here

关于python - Altair 分层多面图表上的滚动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61432045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com