通道#
Altair 提供了许多编码通道,这些通道在不同情况下都非常有用。以下部分对它们进行了总结
位置#
通道 |
Altair 类 |
描述 |
示例 |
---|---|---|---|
x |
x 轴值 |
||
y |
y 轴值 |
||
x2 |
用于范围的第二个 x 值 |
||
y2 |
用于范围的第二个 y 值 |
||
longitude |
地理图表的经度 |
||
latitude |
地理图表的纬度 |
||
longitude2 |
用于范围的第二个经度值 |
||
latitude2 |
用于范围的第二个纬度值 |
||
xError |
x 轴误差值 |
不适用 |
|
yError |
y 轴误差值 |
不适用 |
|
xError2 |
第二个 x 轴误差值 |
不适用 |
|
yError2 |
第二个 y 轴误差值 |
不适用 |
|
xOffset |
x 位置的偏移量 |
||
yOffset |
y 位置的偏移量 |
||
theta |
起始弧角 |
||
theta2 |
结束弧角(弧度) |
标记属性#
通道 |
Altair 类 |
描述 |
示例 |
---|---|---|---|
angle |
标记的角度 |
||
color |
标记的颜色 |
||
fill |
标记的填充 |
||
fillOpacity |
标记填充的不透明度 |
不适用 |
|
opacity |
标记的不透明度 |
||
radius |
标记的半径 |
||
shape |
标记的形状 |
||
size |
标记的大小 |
||
stroke |
标记的描边 |
不适用 |
|
strokeDash |
描边虚线样式 |
||
strokeOpacity |
线条的不透明度 |
不适用 |
|
strokeWidth |
线条的宽度 |
不适用 |
文本和工具提示#
通道 |
Altair 类 |
描述 |
示例 |
---|---|---|---|
text |
用于标记的文本 |
||
tooltip |
工具提示值 |
超链接#
通道 |
Altair 类 |
描述 |
示例 |
---|---|---|---|
href |
点的超链接 |
细节#
数据分组是数据可视化中的重要操作。对于折线和面积标记,将未聚合的数据字段映射到任何非位置通道将根据该字段对折线和堆叠面积进行分组。对于聚合图,所有编码的未聚合字段都用作聚合中的分组字段(类似于 SQL 中 GROUP BY
的字段)。
detail
通道指定了额外的分组字段(或多个字段),用于对数据进行分组,而无需将这些字段映射到任何视觉属性。
例如,这里是一个折线图,显示了 5 家科技公司随时间变化的股价。我们将 symbol
变量映射到 detail
,以便使用它们来对折线进行分组。
import altair as alt
from vega_datasets import data
source = data.stocks()
alt.Chart(source).mark_line().encode(
x="date:T",
y="price:Q",
detail="symbol:N"
)
顺序#
order
选项和 Order
通道可以控制标记在图表上绘制的顺序。
对于堆叠标记,这控制了堆叠组件的顺序。这里,每个条形的元素按颜色通道中名义数据的名称按字母顺序排序。
import altair as alt
from vega_datasets import data
barley = data.barley()
alt.Chart(barley).mark_bar().encode(
x='variety:N',
y='sum(yield):Q',
color='site:N',
order=alt.Order("site").sort("ascending")
)
可以通过将排序选项更改为 降序 来反转顺序。
import altair as alt
from vega_datasets import data
barley = data.barley()
alt.Chart(barley).mark_bar().encode(
x='variety:N',
y='sum(yield):Q',
color='site:N',
order=alt.Order("site").sort("descending")
)
相同的方法也适用于其他标记类型,例如堆叠面积图。
import altair as alt
from vega_datasets import data
barley = data.barley()
alt.Chart(barley).mark_area().encode(
x='variety:N',
y='sum(yield):Q',
color='site:N',
order=alt.Order("site").sort("ascending")
)
请注意,与位置编码通道的 sort
参数不同,Order
通道不能接受一个值列表进行排序,并且在传递有序的 pandas 分类列时不会自动排序。如果我们要以自定义顺序排序堆叠的片段,我们可以遵循此问题评论中的方法,尽管在某些边缘情况下可能不完全支持此方法。此变通方法还会使片段的顺序与使用自定义排序颜色域的图例中颜色显示的顺序一致。
对于折线标记,Order
通道编码了数据点连接的顺序。这对于创建散点图非常有用,该散点图使用与 x 轴和 y 轴不同的字段在点之间绘制线条。
import altair as alt
from vega_datasets import data
driving = data.driving()
alt.Chart(driving).mark_line(point=True).encode(
alt.X('miles').scale(zero=False),
alt.Y('gas').scale(zero=False),
order='year'
)
分面#
更多信息,请参阅分面图。