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项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
pip install altair vega_datasets
2.Altair 基本使用
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还有更多的交互功能,比如选择框拖动、比例绑定、自动响应、表达式选择等等,你可以阅读 Altair 官网学习并使用:
https://altair-viz.github.io/user_guide/interactions.html
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典