繁体   English   中英

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

[英]How to draw only one mark for one group without using encode

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"
)

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

在此输入图像描述

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

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

在此输入图像描述 或者使用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将为数据的每一行显示一个点。

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

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

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM