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

原作者 Parul Pandey

晓查 编译整理

量子位 出品 | 公众号 QbitAI

数据转化成更直观的图片,对于理解数据背后的真相很有帮助。如果你有这方面的需求,而且还在使用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='Miles_per_Gallon')

以耗油量为X轴、马力为Y轴,绘制所有汽车的分布,就得到一张二维图像:alt.Chart(cars).mark_line().encode(x='Miles_per_Gallon',y='Horsepower')

给图表上色

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

alt.Chart(cars).mark_point().encode(x='Miles_per_Gallon',y='Horsepower',color='Origin')

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

使用颜色刻度表,我们还能实现对连续变量的上色,比如在上图中加入“加速度”维度,颜色越深表示加速度越大:alt.Chart(cars).mark_point().encode(x='Miles_per_Gallon',y='Horsepower',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()')

为了分别表示出不同原产国汽车的油耗分布,前文提到的上色方法也能直方图中使用,这样就构成一幅分段的统计直方图:alt.Chart(cars).mark_bar().encode(x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),y='count()',color='Origin')

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

alt.Chart(cars).mark_bar().encode(x=alt.X('Miles_per_Gallon', bin=alt.Bin(maxbins=30)),y='count()',color='Origin',column='Origin')

交互

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

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

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

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

叠加多个图层

如果把前面的汽车耗油量按年度计算出平均值:alt.Chart(cars).mark_point().encode(x='Miles_per_Gallon',y='Horsepower',color='Acceleration')

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

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)',color='Origin').properties(width=800)lines = alt.Chart(cars).mark_line().encode(x=alt.X('Year', timeUnit='year'),y='mean(Miles_per_Gallon)',color='Origin').properties(width=800)spread + lines

更多内容

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

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

教程原文:

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

— 完 —

诚挚招聘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端技术:SpringBoot配置热加载工具(devtools)笔记

今天给大家介绍IDEA开发工具如何配置devtools热加载工具。1、devtools原理介绍spring-boot-devtools是spring为开发者提供的热加载工具包。主要原理是使用了两个ClassLoader类加载器,一个Classloader加载那些不会改变的类(第三方Jar包)&#…

关于ios手机上传图片旋转问题的解决

先占个坑,一会完善!! 转载于:https://www.cnblogs.com/zhuyu/articles/5943400.html

服务器不能创建对象教务系统,[转]解决强智教务系统非IE下无法创建对象错误...

最近要弄教务网的模拟登陆,但苦于教务网只兼容IE8以下的浏览器,不能用chrome强大的F12抓包就很烦,然后发现Fly俊大佬弄了一个相当强的插件啊。但是怕Fly俊大佬的博客失效,所以私自留了个档。侵删啊大佬~以下内容均为转载学校教务系…

Java8对List<Integer>的求和

一般都是对对象对某个字段求和&#xff0c;对List<Object>中Object中的某个字段进行求和&#xff0c;就像这样&#xff1a; 如果想要用流对List<Integer>进行求和&#xff0c;如下 long sum receiveTotalPriceList.stream().reduce(Integer::sum).orElse(0);

安装python无法启动_终端里为什么无法运行python?

1、首先确认自己电脑是否安装了python&#xff0c;如果不确定可以在终端直接输入python&#xff0c;出现以下界面说明已经正确安装&#xff1a;2、如果已经安装了python&#xff0c;但是在终端还是显示未安装&#xff0c;很有可能是没有配置环境变量。环境变量的配置步骤如下&a…

电脑软件:主流的压缩软件对比,看完你就会选择了

目录 1、WinRAR 2、360压缩 3、7-ZIP 4、Bandizip 5、好压/快压 今天小编给大家介绍一下主流的压缩软件&#xff0c;看完你就会选择了&#xff01; 目前主流的压缩软件主要有WinRAR、360压缩、7-ZIP、Bandzip、好压。现在给大家逐个介绍一下&#xff0c;每款压缩软件的特。 1、…

怎么测试ajax get请求,为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?...

在我的Rails应用程序中&#xff0c;我制作了一个AJAX PUT请求(使用Coffeescript)&#xff0c;该请求在我的开发环境中正常工作。当我检查按钮&#xff0c;点击后&#xff0c;会触发使用Firefox的AJAX请求时&#xff0c;它看起来是这样的&#xff1a;为什么我的AJAX在运行测试时…

控制DIV内容滚动的方法,实现不用拖滚动条就可以看到最新消息

三种控制DIV内容滚动的方法&#xff1a; 本人qq群也有许多的技术文档&#xff0c;希望可以为你提供一些帮助(非技术的勿加)。 QQ群&#xff1a; 281442983 (点击链接加入群&#xff1a;http://jq.qq.com/?_wv1027&k29LoD19) 方法一&#xff1a;使用锚标记要滚动到的位置…

python excel模板 插件_python脚本——自动推送txt,EXCEL等文件模板

#!/usr/bin/python# -*- coding: utf-8 -*- #此处支持中文字符一定要放在前两行&#xff0c;置后的话不生效&#xff0c;脚本报错#!/usr/bin/env pythonimport smtplibfrom email.mime.text import MIMETextimport stringimport timeimport datetimeHOST "mail.xxxxxx.co…

电脑软件:推荐10款实用的办公效率神器

目录 1.Everything 搜索神器 2.IDM 下载器 3.Dism 电脑维护工具 4.Captura 录屏神器 5.Hourglass 倒计时软件 6.Ditto剪切板增强工具 7.Snipaste 截图神器 8.ScreenToGif GIF动态图片录制软件 9.QuickLook文档查看工具 10.processlasso 任务管理 1.Everything 搜索神器 Everyth…

财务系统专用服务器中标公告,东南大学财务处服务器存储-招标办公室.doc

东南大学财务处服务器存储-招标办公室东南大学财务处服务器、存储、防雷系统采购招标公告项目名称&#xff1a;标段一&#xff1a;一卡通数据库生产服务器、一卡通数据库容灾服务器标段二&#xff1a;一卡通系统刀片服务器标段三&#xff1a;一卡通存储设备标段四&#xff1a;一…

Finereport集群配置

增加配置文件cluster.xml 将配置包resource文件夹下的cluster.xml打开&#xff0c;如果没有cluster.xml&#xff0c;则新建一个&#xff0c;基本内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <ClusterConfig useCluster"t…

deepin桌面为什么那么卡_deepin因NVIDIA显卡造成开机启动问题:卡在开机logo界面+进入桌面鼠标一直转圈...

写在前面&#xff1a;前两天为了做人工智能的作业&#xff0c;给自己和室友装了一个deepin15.7的系统(我和室友电脑均是NVIDIA显卡)&#xff0c;想着自己装好之后不会出现什么问题&#xff0c;结果错误还是如期而至&#xff0c;无奈&#xff0c;只能自己亲自想办法&#xff0c;…

数据库:MySQL、SqlServer、Oracle对比

一、MySQL 优点&#xff1a; 软件体积小、速度快、免费开源&#xff1b; 跨平台&#xff1b; 因为是开源数据库&#xff0c;提供的接口支持多种语言连接操作 &#xff1b; MySQL的核心程序是采用完全的多线程编程。并且是轻量级的进程&#xff0c;它可以灵活地为用户提供服务…

php 数据库类

<?php /*** 对Yii2数据封装* author nikeyoufumama.com* date 2017-03-08* 抽象类不能被实例化* eg1: selectuse common\models as b_model;$users_model b_model\FactoryModel::users();$users_model->setPk(1);$users_model->setFields(id,name,age,sex);$result …

软件:分享9款实用电脑软件,值得看一看

目录 01.ArcTime 02.Luminar 4 03.嗨格式数据恢复大师 04. iTools 05.皮皮直连 06.Kodi 07. PhotoZoom 08.AnyDesk 09.射手影音 今天给大家分享9款实用电脑软件&#xff0c;值得看一看。 01.ArcTime 下载地址&#xff1a;https://arctime.org/ 这是一款特别好用的字幕制作软件。…

怎么转化大小写_亚马逊search term被限制,Search Terms只能写一行怎么办?

search term简称ST&#xff0c; 也叫做亚马逊的关键字&#xff0c;由亚马逊为卖家提供的&#xff0c;除了Title标题&#xff0c;Description描述之外的关键字拓展功能&#xff0c;正确的书写5行描述可以提曝光&#xff0c;流量&#xff0c;和转化.关键字建议包含了客户的具体需…