Altair 是一个基于Jupyter Notebook的强大可视化库。它提供了强大而简洁的可视化语法,使我们能够快速构建各种统计可视化图表。
通过下面10行代码,你就能创建一个可交互的散点图:
import altair as alt
from vega_datasets import data
cars = data.cars()
alt.Chart(cars).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color='Origin',
).interactive()
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
**(可选1) **如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
**(可选2) **此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖 :
pip install altair vega_datasets
2.基本使用
Altair 中的数据是围绕 Pandas Dataframe 构建的。
我们首先导入 Pandas 并创建一个简单的 DataFrame 以进行可视化,a 列中有一个分类变量,b 列有一个数值变量:
import pandas as pd
data = pd.DataFrame({'a': list('CCCDDDEEE'),
'b': [2, 7, 4, 1, 2, 6, 8, 4, 7]})
Altair 中的基本对象是Chart,它将上述的数据作为单个参数:
import altair as alt
chart = alt.Chart(data)
到目前为止,我们已经定义了 Chart 对象,但是我们还没有告诉图表对数据做任何事情。接下来会出现。
有了这个图表对象,我们现在可以指定我们希望如何可视化数据,比如作为点:
alt.Chart(data).mark_point()
然后对数据进行编码,比如指定 a 列为x,b列为y:
alt.Chart(data).mark_point().encode(
x='a', y='b'
)
效果如下:
如果你希望聚合求得某列得平均值,你还可以这么做:
alt.Chart(data).mark_point().encode(
x='a',
y='average(b)'
)
如果你希望使用柱状图,只需要把mark_point改为mark_bar:
alt.Chart(data).mark_bar().encode(
x='a',
y='average(b)'
)
还可以获得水平柱状图,我们只需要把x和y对调一下:
alt.Chart(data).mark_bar().encode(
y='a',
x='average(b)'
)
除了点状图和柱状图,Altair 还支持几十种图表类型:
更多的图表类型请在官网查看:
https://altair-viz.github.io/gallery/index.html
3.高级使用
你可以给图表自定义你喜欢的颜色和对应的横坐标纵坐标标题:
alt.Chart(data).mark_bar(color='firebrick').encode(
alt.Y('a', title='category'),
alt.X('average(b)', title='avg(b) by category')
)
你还可以将图表保存为HTML:
chart = alt.Chart(data).mark_bar().encode(
x='a',
y='average(b)',
)
chart.save('chart.html')
如果你希望能够通过区间选择数据点并计数,你可以这么做:
import altair as alt
from vega_datasets import data
source = data.cars()
brush = alt.selection(type='interval')
points = alt.Chart(source).mark_point().encode(
x='Horsepower',
y='Miles_per_Gallon',
color=alt.condition(brush, 'Origin', alt.value('lightgray'))
).add_selection(
brush
)
bars = alt.Chart(source).mark_bar().encode(
y='Origin',
color='Origin',
x='count(Origin)'
).transform_filter(
brush
)
points & bars
跟牛逼的是,Altair还可以做多图表联动:
# 公众号:Python实用宝典 整合
import altair as alt
from vega_datasets import data
cars = data.cars.url
brush = alt.selection_interval()
chart = alt.Chart(cars).mark_point().encode(
y='Horsepower:Q',
color=alt.condition(brush, 'Origin:N', alt.value('lightgray'))
).properties(
width=250,
height=250
).add_selection(
brush
)
chart.encode(x='Acceleration:Q') | chart.encode(x='Miles_per_Gallon:Q')
左边圈起来的 Acceleration 数据点,右边会对应显示其 Miles_per_Gallon 数据点:
除了这些,Altair还有更多的交互功能,比如选择框拖动、比例绑定、自动响应、表达式选择等等。
全部0条评论
快来发表一下你的评论吧 !