具有变换聚合的 altair 直方图无法正确覆盖全局平均值

Posted

技术标签:

【中文标题】具有变换聚合的 altair 直方图无法正确覆盖全局平均值【英文标题】:altair histogram chart with transform aggregate can't properly overlay a global mean 【发布时间】:2021-12-16 16:17:23 【问题描述】:

我正在尝试创建具有全局平均值的直方图。源表需要首先使用 transform_aggregate 进行转换。但是当我将平均值添加到图表时,直方图消失了,图表只显示了平均线。有人可以帮我吗?这是代码。

import altair as alt
from vega_datasets import data

source = data.movies.url

base = alt.Chart(source).transform_aggregate(agg='mean(IMDB_Rating)',groupby=['Distributor'])

bar = base.mark_bar().encode( x=alt.X('agg:Q', bin=alt.Bin(step=0.5), ),y='count()')

rule = base.mark_rule(color='red').encode(x='mean(agg):Q',size=alt.value(5))

bar + rule

【问题讨论】:

【参考方案1】:

似乎在两层中存在聚合转换会以某种方式破坏数据流;这似乎是一个错误。通过将转换附加到顶层图表而不是每个单独的层,我能够找到一种解决方法:

import altair as alt
from vega_datasets import data

source = data.movies.url

bar = alt.Chart(source).mark_bar().encode(
  x=alt.X('agg:Q', bin=alt.Bin(step=0.5), ),
  y='count()'
)

rule = alt.Chart(source).mark_rule(color='red').encode(
  x='mean(agg):Q',size=alt.value(5)
)

alt.layer(bar, rule).transform_aggregate(
  agg='mean(IMDB_Rating)',
  groupby=['Distributor']
)

【讨论】:

以上是关于具有变换聚合的 altair 直方图无法正确覆盖全局平均值的主要内容,如果未能解决你的问题,请参考以下文章

altair 多面直方图 - 独立尺度

贪玩巴斯数字图像处理基础课堂笔记——「亮度变换与空间滤波全解——加权平滑滤波器相关&卷积拉普拉斯图像增强变化直方图」 2021-10-1910-1210-25

具有 after_key 和 size 的 ElasticSearch 复合聚合

Python 数据可视化:Altair 使用全解析

数据挖掘(2.4)--数据归约和变换

图像处理系统的分析工具