altair.when#
- altair.when(predicate=Undefined, *more_predicates, empty=Undefined, **constraints)#
开始一个
when-then-otherwise
条件。生成的谓词是
predicate
以及可选的*
,**
参数的&
缩减。- 参数:
- predicate
一个选择或测试谓词。
str
输入将被视为测试操作数。注意
接受与
condition()
中相同范围的输入。- *more_predicates
附加谓词,仅限于支持
&
的类型。- empty
对于选择参数,空选择的谓词默认返回
True
。可以通过设置empty=False
来覆盖此行为。注意
当
predicate
是一个被多次使用的Parameter
时,alt.when(..., empty=...)
为每次出现提供精细控制。- **constraints
指定 字段相等谓词(Field Equal Predicate)。这是
alt.datum.field_name == value
的快捷方式,请参阅示例了解用法。
- 返回:
When
一个部分状态,需要调用
When.then()
来完成条件。
注意事项
直接受到 polars.when 中使用的
when-then-otherwise
语法启发。
示例
设置一个常见图表
import altair as alt from vega_datasets import data source = data.cars() brush = alt.selection_interval() points = ( alt.Chart(source) .mark_point() .encode(x="Horsepower", y="Miles_per_Gallon") .add_params(brush) ) points
基本的
if-then-else
条件直接转换为when-then-otherwise
points.encode(color=alt.when(brush).then("Origin").otherwise(alt.value("lightgray")))
省略
.otherwise()
子句将使用通道默认值points.encode(color=alt.when(brush).then("Origin"))
作为位置参数传递的谓词将通过
&
进行缩减points.encode( color=alt.when( brush, (alt.datum.Miles_per_Gallon >= 30) | (alt.datum.Horsepower >= 130) ) .then("Origin") .otherwise(alt.value("lightgray")) )
使用关键字参数
constraints
可以简化诸如以下的组合verbose_composition = ( (alt.datum.Name == "Name_1") & (alt.datum.Color == "Green") & (alt.datum.Age == 25) & (alt.datum.StartDate == "2000-10-01") ) when_verbose = alt.when(verbose_composition) when_concise = alt.when(Name="Name_1", Color="Green", Age=25, StartDate="2000-10-01")