具有变换聚合的 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 直方图无法正确覆盖全局平均值的主要内容,如果未能解决你的问题,请参考以下文章
贪玩巴斯数字图像处理基础课堂笔记——「亮度变换与空间滤波全解——加权平滑滤波器相关&卷积拉普拉斯图像增强变化直方图」 2021-10-1910-1210-25