通道#

Altair 提供了许多编码通道,这些通道在不同情况下都非常有用。以下部分对它们进行了总结

位置#

通道

Altair 类

描述

示例

x

X

x 轴值

带工具提示的简单散点图

y

Y

y 轴值

带工具提示的简单散点图

x2

X2

用于范围的第二个 x 值

甘特图

y2

Y2

用于范围的第二个 y 值

烛台图

longitude

Longitude

地理图表的经度

点地图

latitude

Latitude

地理图表的纬度

点地图

longitude2

Longitude2

用于范围的第二个经度值

美国机场连接图(交互式)

latitude2

Latitude2

用于范围的第二个纬度值

美国机场连接图(交互式)

xError

XError

x 轴误差值

不适用

yError

YError

y 轴误差值

不适用

xError2

XError2

第二个 x 轴误差值

不适用

yError2

YError2

第二个 y 轴误差值

不适用

xOffset

XOffset

x 位置的偏移量

带 xOffset 的分组条形图

yOffset

YOffset

y 位置的偏移量

带抖动的带状图

theta

Theta

起始弧角

径向图

theta2

Theta2

结束弧角(弧度)

吃豆人图

标记属性#

通道

Altair 类

描述

示例

angle

Angle

标记的角度

风矢量图

color

Color

标记的颜色

简单热力图

fill

Fill

标记的填充

山脊线图

fillOpacity

FillOpacity

标记填充的不透明度

不适用

opacity

Opacity

标记的不透明度

水平线图

radius

Radius

标记的半径

径向图

shape

Shape

标记的形状

美国各州收入:换行分面

size

Size

标记的大小

表格气泡图 (Github 打卡图)

stroke

Stroke

标记的描边

不适用

strokeDash

StrokeDash

描边虚线样式

多系列折线图

strokeOpacity

StrokeOpacity

线条的不透明度

不适用

strokeWidth

StrokeWidth

线条的宽度

不适用

文本和工具提示#

通道

Altair 类

描述

示例

text

文本

用于标记的文本

带标签的简单散点图

tooltip

Tooltip

工具提示值

带工具提示的简单散点图

细节#

数据分组是数据可视化中的重要操作。对于折线和面积标记,将未聚合的数据字段映射到任何非位置通道将根据该字段对折线和堆叠面积进行分组。对于聚合图,所有编码的未聚合字段都用作聚合中的分组字段(类似于 SQL 中 GROUP BY 的字段)。

detail 通道指定了额外的分组字段(或多个字段),用于对数据进行分组,而无需将这些字段映射到任何视觉属性。

通道

Altair 类

描述

示例

detail

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

分面#

更多信息,请参阅分面图

通道

Altair 类

描述

示例

column

Column

分面图的列

分面散点图

row

Row

分面图的行

Becker 的大麦分面图

facet

Facet

通用分面图的行和/或列

美国人口:换行分面