import altair as alt
from vega_datasets import data
cars = data.cars()
Run Code Online (Sandbox Code Playgroud)
alt.Chart(cars).mark_point(opacity=0.1).encode(
x="Cylinders:O",
y="Origin"
)
Run Code Online (Sandbox Code Playgroud)
它在一个位置绘制多个点:
要在一个地方只绘制一个点,我需要添加一个编码count(),
alt.Chart(cars).mark_point(opacity=0.3).encode(
x="Cylinders:O",
y="Origin",
tooltip="count()"
)
Run Code Online (Sandbox Code Playgroud)
或使用transform_aggregate(),但我需要设置 groupby 参数:
alt.Chart(cars).mark_point(opacity=0.4).encode(
x="Cylinders:O",
y="Origin",
).transform_aggregate(
count="count()",
groupby=["Cylinders", "Origin"]
)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何方法可以在没有transform_aggregate()或 的情况下做到这一点count()。
Altair 将为每一行数据显示一个点,除非您通过编码或转换显式传递聚合。
如果您想应用除聚合之外对图表没有任何影响的聚合,最简单的方法是通过通道detail(大致意思是“添加此编码但不对其执行任何操作”):
alt.Chart(cars).mark_point(opacity=0.4).encode(
x="Cylinders:O",
y="Origin:N",
detail='count()'
)
Run Code Online (Sandbox Code Playgroud)