比 Excel 制图更强大,Python 可视化工具 Altair 入门教程

数据转化成更直观的图片,对于理解数据背后的真相很有帮助。如果你有这方面的需求,而且还在使用 Python,那么强烈推荐你试一试 Altair。

Altair是一个专为 Python 编写的可视化软件包,它能让数据科学家更多地关注数据本身和其内在的联系。

Altair 由华盛顿大学的数据科学家 Jake Vanderplas 编写,目前在 GitHub 上已经收获超过 3000 星。

最近,Medium 上一位小姐姐 Parul Pandey 分享了 Altair 的入门教程,希望对从事数据科学的用户有帮助。量子位对主要内容进行了编译整理。

Parul 以汽车数据为例,将一个汽车数据集 "cars" 载入到 Altair 中。

cars 中包含汽车的生产年份、耗油量、原产国等 9 个方面的数据,后面将对这些内容进行可视化处理。

安装和导入 Altair 软件包

除了安装 Altair 和它的依赖软件外,还需要安装其他前端工具,比如 Jupyter Notebook、JupyterLab、Colab 等等。

Parul 小姐姐推荐安装 JupyterLab:

$ pip install -U altair vega_datasets jupyterlab

需要注意的是,由于 Altair 的教程文档中还包含 vega 数据集,因此也需要一并安装上。

接着在终端中输入:jupyter lab,就能在你的浏览器中自动打开它啦。

在代码开头别忘了导入 Altair:

import altair as alt

完成以上准备工作,我们就可以开始绘图了

开始绘制图表

Altair 中的基本对象是Chart,它将数据框作为单个参数。你可以这样定义它:

chart = alt.Chart ( cars )

Chart 有三个基本方法:数据(data)、标记(mark)和编码(encode),使用它们的格式如下:

alt.Chart ( data ) .mark_point ( ) .encode (

encoding_1='column_1',

encoding_2='column_2',

# etc.

)

数据顾名思义,直接导入 cars 数据集即可。标记和编码则决定着绘制图表的样式,下面着重介绍这两部分。

标记可以让用户在图中以不同形状来表示数据点,比如使用实心点、空心圆、方块等等。

如果我们只调用这个方法,那么所有的数据点都将重叠在一起:

这显然是没有意义的,还需要有编码来指定图像的具体内容。常用的编码有:

x: x 轴数值

y: y 轴数值

color: 标记点颜色

opacity: 标记点的透明度

shape: 标记点的形状

size: 标记点的大小

row: 按行分列图片

column: 按列分列图片

以汽车的耗油量为例,把所有汽车的数据绘制成一个一维散点图,指定 x 轴为耗油量:

alt.Chart ( cars ) .mark_point ( ) .encode (

x='Miles_per_Gallon'

但是使用 mark_point ( ) 会让所有标记点混杂在一起,为了让图像更清晰,可以替换成棒状标记点 mark_tick ( ) :

alt.Chart ( cars ) .mark_tick ( ) .encode (

以耗油量为 X 轴、马力为 Y 轴,绘制所有汽车的分布,就得到一张二维图像:

alt.Chart ( cars ) .mark_line ( ) .encode (

x='Miles_per_Gallon',

y='Horsepower'

给图表上色

前面我们已经学会了绘制二维图像,如果能给不同组的数据分配不同的颜色,就相当于给数据增加了第三个维度。

alt.Chart ( cars ) .mark_point ( ) .encode (

y='Horsepower',

color='Origin'

上面的图中,第三个维度 " 原产国 " 是一个离散变量。

使用颜色刻度表,我们还能实现对连续变量的上色,比如在上图中加入 " 加速度 " 维度,颜色越深表示加速度越大:

color='Acceleration'

数据的分类与汇总

上面的例子中,我们使用的主要是散点图。实际上,Altair 还能方便地对数据进行分类和汇总,绘制统计直方图。

相比其他绘图工具,Altair 的特点在于不需要调用其他函数,而是直接在数轴上进行修改。

例如统计不同油耗区间的汽车数量,对 X 轴使用 alt.X ( ) ,指定数据和间隔大小,对 Y 轴使用 count ( ) 统计数量。

alt.Chart ( cars ) .mark_bar ( ) .encode (

x=alt.X ( 'Miles_per_Gallon', bin=alt.Bin ( maxbins=30 ) ) ,

y='count ( ) '

为了分别表示出不同原产国汽车的油耗分布,前文提到的上色方法也能直方图中使用,这样就构成一幅分段的统计直方图:

y='count ( ) ',

color='Origin'

如果你觉得上图还不够直观,那么可以用 column 将汽车按不同原产国分列成 3 张直方图:

color='Origin',

column='Origin'

交互

除了绘制基本图像,Altair 强大之处在于用户可以与图像进行交互,包括平移、缩放、选中某一块数据等操作。

在绘制图片的代码后面,调用 interactive ( ) 模块,就能实现平移、缩放:

Altair 还为创建交互式图像提供了一个 selection 的 API:

在选择功能上,我们能做出一些更酷炫的高级功能,例如对选中的数据点进行统计,生成实时的直方图。

叠加多个图层

如果把前面的汽车耗油量按年度计算出平均值:

在统计学上,我们还能定义平均值的置信区间,为了让图表更好看,可以分别列出三个不同产地汽车的耗油量平均值置信区间:

alt.Chart ( cars ) .mark_area ( opacity=0.3 ) .encode (

x=alt.X ( ‘ Year ’ , timeUnit= ’ year ’ ) ,

y=alt.Y ( ‘ ci0 ( Miles_per_Gallon ) ’ , axis=alt.Axis ( title= ’ Miles per Gallon ’ ) ) ,

y2= ’ ci1 ( Miles_per_Gallon ) ’ ,

color= ’ Origin ’

) .properties (

width=600

最后我们可以用图层 API 将平均值和置信区间两幅图叠加起来:

spread = alt.Chart ( cars ) .mark_area ( opacity=0.3 ) .encode (

x=alt.X ( 'Year', timeUnit='year' ) ,

y=alt.Y ( 'ci0 ( Miles_per_Gallon ) ', axis=alt.Axis ( title='Miles per Gallon' ) ) ,

y2='ci1 ( Miles_per_Gallon ) ',

width=800

lines = alt.Chart ( cars ) .mark_line ( ) .encode (

y='mean ( Miles_per_Gallon ) ',

spread + lines

本文只是介绍了 Altair 的一些基本使用方法,远远不能涵盖它所有的功能。如果需要了解更多,请参阅 GitHub 页说明:

https://github.com/altair-viz/altair

教程原文:

https://medium.com/analytics-vidhya/exploratory-data-visualisation-with-altair-b8d85494795c

— 完 —

年度评选报名

加入社群

量子位 AI 社群开始招募啦,欢迎对 AI 感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字 " 交流群 ",获取入群方式;

此外,量子位专业细分群 ( 自动驾驶、CV、NLP、机器学习等 ) 正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字 " 专业群 ",获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑 / 记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号 ( QbitAI ) 对话界面,回复 " 招聘 " 两个字。

量子位QbitAI · 头条号签约作者

վ ' ᴗ ' ի 追踪 AI 技术和产品新动态

喜欢就点「好看」吧 !

qpython3绘图_比Excel制图更强大,Python可视化工具Altair入门教程相关推荐

  1. python图表可视化工具_比Excel制图更强大,Python可视化工具Altair入门教程

    原作者 Parul Pandey 晓查 编译整理 量子位 出品 | 公众号 QbitAI 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用Python,那么强 ...

  2. 比Excel制图更强大,Python可视化工具Altair入门教程

    原作者 Parul Pandey  晓查 编译整理 量子位 出品 | 公众号 QbitAI 数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用Python,那么 ...

  3. 比 Excel 更强大,Python 的可视化库 Altair 入门

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  4. gui python qt 绘图_最全整理!计算、可视化、机器学习等8大领域38个常用Python库...

    导读:Python作为一个设计优秀的程序语言,现在已广泛应用于各种领域,依靠其强大的第三方类库,Python在各个领域都能发挥巨大的作用. 作者:李明江 张良均 周东平 张尚佳 来源:华章科技 01 ...

  5. python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!

    我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...

  6. python和excel数据分析有什么区别_用Excel、SQL、Python做数据分析有何不同?

    作者简介 HeoiJin:立志透过数据看清世界的产品策划,专注爬虫.数据分析.产品策划领域. 万物皆营销 | 资本永不眠 | 数据恒真理 CSDN:https://me.csdn.net/weixin ...

  7. python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法

    大家知道,PyCharm是一款著名的Python IDE开发工具,是拥有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,具备基本的调试.语法高亮.Project管理.代码跳转.智能提示 ...

  8. 下面哪个不是python常用的开发工具_有哪些值得推荐的 Python 开发工具?

    数据转化成更直观的图片,对于理解数据背后的真相很有帮助.如果你有这方面的需求,而且还在使用Python,那么强烈推荐你试一试Altair. Altair是一个专为Python编写的可视化软件包,它能让 ...

  9. 给一张表加一个自动编号字段_可视化仪表板快速入门教程,10分钟做一张销售分析仪表板...

    提到可视化仪表板制作,大部分人都会想到用Excel的透视表来做,网上也有很多教程学习,但是excel透视表的操作步骤繁多,遇到复杂的仪表板,看几遍教程都不一定能记住. 今天就给大家分享比Excel透视 ...

最新文章

  1. 人工智能尴尬的2019:需要钱却没钱可烧了
  2. Android中ExpandableListView的使用
  3. linux 批量替换
  4. java获取硬盘序列号_Win7 64+Python3.7获取计算机硬盘信息初探
  5. 应届生去软通动力怎么样_超强干货:应届生如何找实习工作?
  6. 春晚亲民,快手上行:探秘春晚红包的另一种打开方式
  7. javaEE(3)_servlet基础
  8. k型热电偶材料_热电偶温度计的二三事
  9. java游戏开发总结_java--游戏后端--项目开发总结6--资源下载
  10. paip.代码生成器数据源格式最佳实践
  11. Chrome保存整个网页为图片、PDF
  12. 今天的码农女孩学习了关于python元祖和字典的知识以及结合前面学的知识做了四个小练习
  13. 不要女程序员,公司都爱招男性程序员,这是为什么?
  14. 从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题
  15. Python猫眼电影最近上映的电影票房信息
  16. uniapp 添加本地文件日志 并增加防抖(防止重复写入被覆盖)
  17. 单例模式(中):单例模式的弊端
  18. (windows) 开机时出现“checking file system on C” 问题原因及解决方法
  19. element el-checkbox已绑定值却无法勾选的问题
  20. 求解三维装箱问题的启发式深度优先搜索算法(python)

热门文章

  1. [Cypress] Find and Test Focused Input with Chrome’s DevTools in Cypress
  2. SPOJ HIGH Highways
  3. 方法 -------JavaScript
  4. spirng整合rmi
  5. 不均匀正负样本分布下的机器学习
  6. unity, 内置shader下载地址
  7. 只有程序员才看得懂的情书
  8. code review手记3
  9. 简单介绍分析一下JSP所生成的Servlet代码
  10. 测试低频噪音软件,设计制作并验证0.1Hz10Hz超低频微弱噪音检测放大器要点