python - 在 Altair 图中绘制中位数和均值
问题描述
如何在 Altair 中绘制均值和中值,以颜色编码区分?
下面是我的第一次尝试,但它不包括传说,似乎不是最优雅的方式。
import altair as alt
from vega_datasets import data
source = data.cars()
mean = alt.Chart(source).mark_line(color='red', point=True).encode(
x='Year',
y='mean(Miles_per_Gallon)'
)
median = alt.Chart(source).mark_line().encode(
x='Year',
y='median(Miles_per_Gallon)'
)
mean+median
解决方案
最好使用聚合变换来计算聚合,然后使用折叠变换来允许在单个编码中使用两列:
import altair as alt
from vega_datasets import data
source = data.cars()
alt.Chart(source).transform_aggregate(
mean='mean(Miles_per_Gallon)',
median='median(Miles_per_Gallon)',
groupby=['Year']
).transform_fold(
['mean', 'median'],
as_=['aggregate', 'value']
).mark_line().encode(
x='Year',
y='value:Q',
color='aggregate:N',
)
推荐阅读
- powershell - Get-ChildItem 但没有文件夹(完成此部分)并且只有某些文件类型
- reactjs - 防止在使用 useState 的功能组件中将新函数作为道具传递
- java - 从我的 android 应用程序中务实地阅读并直接重播其他应用程序的通知?
- roku - 不能在 ROKU 中手动播放流吗?
- python - 在嵌套循环中迭代多个变量
- java - RecyclerView的LayoutInflator中无法解析布局
- bash - awk 和 sed 的管道命令太慢了!关于如何让它更快地工作的任何想法?
- c# - 连续播放WAV文件
- flutter - 如何重新打包 Flutter 插件以用于 Flutter Web?
- ios - iOS 如何在 Cordova / Phonegap 构建中执行本地化?