图表配置¶
Altair 提供了许多钩子来配置图表的外观;我们没有时间在这里详细介绍所有可用的选项,但了解如何访问和探索这些配置设置的位置和方法会很有用。
一般来说,可以通过两到三个位置控制图表的外观,每个位置的优先级都高于前一个。
顶级图表配置。在 Altair 图表的顶层,您可以指定将应用于图表中每个面板或图层的配置设置。
局部配置设置。通过指定局部配置,可以在局部覆盖顶级设置。
编码值。如果指定了编码值,它将具有最高优先级,并覆盖其他选项。
让我们看一个示例。
import altair as alt
import numpy as np
import pandas as pd
np.random.seed(42)
data = pd.DataFrame(np.random.randn(100, 2), columns=['x', 'y'])
示例 1:控制标记属性¶
假设您想控制散点图中标记的颜色:让我们看看实现此目的的三种选项。我们将使用一个简单的正态分布点数据集
alt.Chart(data).mark_point().encode(
x='x:Q',
y='y:Q'
)
顶级配置¶
在顶层,Altair 有一个 configure_mark()
方法,允许您调整标记的许多通用配置设置,还有一个 configure_point()
属性,专门调整点的属性。
您可以在 Jupyter 中通过问号访问文档字符串来查看可用选项
alt.Chart.configure_point?
顶级配置应被视为图表主题:它们是所有图表元素美学的默认设置。让我们使用 configure_point
来设置点的一些属性
alt.Chart(data).mark_point().encode(
x='x:Q',
y='y:Q'
).configure_point(
size=200,
color='red',
filled=True
)
有许多局部配置可用;您可以使用 Jupyter 的 tab 补全和帮助功能来探索它们
alt.Chart.configure_ # then the TAB key to see available configurations
局部标记配置¶
在 mark_point()
方法中,您可以传递局部配置,这些配置将覆盖顶级配置设置。参数与 configure_mark
的参数相同。
alt.Chart(data).mark_point(color='green', filled=False).encode(
x='x:Q',
y='y:Q'
).configure_point(
size=200,
color='red',
filled=True
)
请注意,这里的“color”和“fill”配置被局部配置覆盖了,但“size”保持不变。
编码配置¶
最后,优先级最高的设置是“encoding”设置。这里让我们在编码中将颜色设置为“steelblue”
alt.Chart(data).mark_point(color='green', filled=False).encode(
x='x:Q',
y='y:Q',
color=alt.value('steelblue')
).configure_point(
size=200,
color='red',
filled=True
)
这是一个有点刻意的例子,但有助于理解可以设置标记属性的各个位置。
示例 2:图表和轴标题¶
图表和轴标题会根据数据源自动设置,但有时更改它们会很有用。例如,这是上面数据的直方图
alt.Chart(data).mark_bar().encode(
x=alt.X('x', bin=True),
y=alt.Y('count()')
)
我们可以使用编码的 title
参数显式设置轴标题
alt.Chart(data).mark_bar().encode(
x=alt.X('x', bin=True, title='binned x values'),
y=alt.Y('count()', title='counts in x')
)
同样,我们可以在图表属性中设置图表的 title
属性
alt.Chart(data).mark_bar().encode(
x=alt.X('x', bin=True, title='binned x values'),
y=alt.Y('count()', title='counts in x')
).properties(
title='A histogram'
)
示例 3:轴属性¶
如果您想设置轴的属性,包括网格线,可以使用编码的 axis
参数。
alt.Chart(data).mark_bar().encode(
x=alt.X('x', bin=True, axis=alt.Axis(labelAngle=45)),
y=alt.Y('count()', axis=alt.Axis(labels=False, ticks=False, title=None))
)
请注意,如果您希望这些值应用于整个图表,也可以在顶级配置中调整它们。例如
alt.Chart(data).mark_bar().encode(
x=alt.X('x', bin=True),
y=alt.Y('count()', axis=alt.Axis(labels=False, ticks=False, title=None))
).configure_axisX(
labelAngle=45
)
示例 4:比例属性和轴限制¶
每个编码还有一个 scale
,允许您调整轴限制和其他比例属性。
alt.Chart(data).mark_point().encode(
x=alt.X('x:Q', scale=alt.Scale(domain=[-5, 5])),
y=alt.Y('y:Q', scale=alt.Scale(domain=[-5, 5])),
)
请注意,如果将比例尺缩小到小于数据范围,数据默认会超出比例尺
alt.Chart(data).mark_point().encode(
x=alt.X('x:Q', scale=alt.Scale(domain=[-3, 1])),
y=alt.Y('y:Q', scale=alt.Scale(domain=[-3, 1])),
)
不隐藏数据在探索性可视化中是一个有用的默认设置,因为它可以防止您无意中遗漏数据点。
如果您希望标记在比例尺范围之外被裁剪掉,可以设置标记的 clip
属性
alt.Chart(data).mark_point(clip=True).encode(
x=alt.X('x:Q', scale=alt.Scale(domain=[-3, 1])),
y=alt.Y('y:Q', scale=alt.Scale(domain=[-3, 1])),
)
另一种有用的方法是将数据“限制”在比例尺的极端范围内,即使超出范围也保持可见
alt.Chart(data).mark_point().encode(
x=alt.X('x:Q', scale=alt.Scale(domain=[-3, 1], clamp=True)),
y=alt.Y('y:Q', scale=alt.Scale(domain=[-3, 1], clamp=True)),
).interactive()
示例 5:颜色比例尺¶
有时手动调整使用的颜色比例尺很有用
from vega_datasets import data
weather = data.seattle_weather()
weather.head()
日期 | 降水量 | 最高温度 | 最低温度 | 风速 | 天气 | |
---|---|---|---|---|---|---|
0 | 2012-01-01 | 0.0 | 12.8 | 5.0 | 4.7 | 毛毛雨 |
1 | 2012-01-02 | 10.9 | 10.6 | 2.8 | 4.5 | 雨 |
2 | 2012-01-03 | 0.8 | 11.7 | 7.2 | 2.3 | 雨 |
3 | 2012-01-04 | 20.3 | 12.2 | 5.6 | 4.7 | 雨 |
4 | 2012-01-05 | 1.3 | 8.9 | 2.8 | 6.1 | 雨 |
alt.Chart(weather).mark_point().encode(
x='date:T',
y='temp_max:Q',
color='weather:N'
)
您可以使用颜色比例尺属性并参考 Vega 的命名颜色方案来更改颜色方案
alt.Chart(weather).mark_point().encode(
x='date:T',
y='temp_max:Q',
color=alt.Color('weather:N', scale=alt.Scale(scheme="dark2"))
)
或者,您可以通过指定颜色域和颜色范围来创建自己的颜色方案
colorscale = alt.Scale(domain=['sun', 'fog', 'drizzle', 'rain', 'snow'],
range=['goldenrod', 'gray', 'lightblue', 'steelblue', 'midnightblue'])
alt.Chart(weather).mark_point().encode(
x='date:T',
y='temp_max:Q',
color=alt.Color('weather:N', scale=colorscale)
)
练习:调整图表¶
现在花大约 10 分钟练习调整图表的美观性。
使用您在之前练习中最喜欢的可视化图表,并调整其美观性
自定义标记的外观(大小、描边宽度等)
更改轴和图表标题
更改 x 轴和 y 轴的限制
使用 alt.Chart.configure_
进行 tab 补全来查看各种配置选项,然后使用 ?
查看选项功能的文档。