如何在不使用编码的情况下为一组只绘制一个标记
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
通道(大致意思是 "add this encoding but don't do anything with it") :
alt.Chart(cars).mark_point(opacity=0.4).encode(
x="Cylinders:O",
y="Origin:N",
detail='count()'
)
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
通道(大致意思是 "add this encoding but don't do anything with it") :
alt.Chart(cars).mark_point(opacity=0.4).encode(
x="Cylinders:O",
y="Origin:N",
detail='count()'
)