其他分享
首页 > 其他分享> > 如何在不使用编码的情况下仅为一组绘制一个标记

如何在不使用编码的情况下仅为一组绘制一个标记

作者:互联网

import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point(opacity=0.1).encode(
    x="Cylinders:O",
    y="Origin"
)

它在一个位置上绘制许多点:

enter image description here

在一个地方只画一个点,我需要给count()添加一个编码,

alt.Chart(cars).mark_point(opacity=0.3).encode(
    x="Cylinders:O",
    y="Origin",
    tooltip="count()"
)

enter image description here
或使用transform_aggregate(),但我需要设置groupby参数:

alt.Chart(cars).mark_point(opacity=0.4).encode(
    x="Cylinders:O",
    y="Origin",
).transform_aggregate(
    count="count()",
    groupby=["Cylinders", "Origin"]
)

我想知道有没有方法可以做到这一点,而无需transform_aggregate()或count().

解决方法:

除非您通过编码或转换显式传递聚合,否则Altair将为数据的每一行显示一个点.

如果要应用对聚合没有影响的,对图表没有影响的聚合,最简单的方法是通过明细通道(大致意味着“添加此编码,但不对其进行任何操作”):

alt.Chart(cars).mark_point(opacity=0.4).encode(
    x="Cylinders:O",
    y="Origin:N",
    detail='count()'
)

enter image description here

标签:altair,python
来源: https://codeday.me/bug/20191108/2005324.html