安装Altair库

pip install altair

与安装其他第三方库的方法一致。

开始绘制图表

Altair的基本对象是Chart,它将数据框作为单个参数,依靠以下代码定义:

import altair as alt
chart = alt.Chart(data)

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

数据(data)

数据顾名思义,直接导入数据框的数据。

Altair 统计图表在实际使用中主要围绕 Pandas Dataframe 构建的。因此想要利用Altair需要有一定的Pandas使用基础。(孙兴华老师的Pandas教程)

导入 Pandas 并创建一个简单的 DataFrame 进行可视化,a 列中有一个分类变量,b 列有一个数值变量:

import pandas as pddata = pd.DataFrame({'a': list('CCCDDDEEE'),'b': [2, 7, 4, 1, 2, 6, 8, 4, 7]})

图表类型(mark)

mark属性指定了数据在在图上应以怎样的方式精确展示。

有了alt.Chart(data)图表对象,现在可以指定我们想要的数据可视化图表类型。通过mark可以方便地访问该属性Chart.mark_*。例如,我们可以使用Chart.mark_point将数据显示为一个点:

alt.Chart(data).mark_point()

这些代码产生的渲染图由data中每一行数据产生,在我们没有为这些点指定位置前,所有的点都重叠在一起。

编码(encode)

创建有意义的数据可视化图表的关键是将数据的属性映射到可视属性,以便有效地传达数据中的信息。为了把mark渲染的点分离开,在 Altair 中,这种视觉属性到数据列的映射称为编码,并且最常通过Chart.encode() 方法表示。

alt.Chart(data).mark_point().encode(x='a',)

encode()方法在数据和图表属性之间的映射关系,例如:x轴、y轴、颜色、形状、大小……(x, y, color, shape, size…)

刚刚我们分离了'a',现在增加一个映射到纵坐标的编码通道分离'b'

alt.Chart(data).mark_point().encode( x='a', y='b' )

可以看到对于指定为 Dataframe 的数据,Altair 可以自动确定每种编码的正确数据类型,并创建适当的比例和图例来表示数据。

数据转换:聚合

为了在数据可视化方面提供更大的灵活性,Altair 具有用于聚合数据的内置语法。例如,我们可以通过在某一列中使用聚合来计算所有值的平均值:

 alt.Chart(data).mark_point().encode( x='a', y='average(b)' )

可以看到,在每一个x轴的类别中都有一个点表示这一类的平均值。

通常我们用条形图来表示聚合值而不是由点标记表示:

 alt.Chart(data).mark_bar().encode( x='a', y='average(b)' )

因为分类特征映射到x-axis(x轴),所以结果是一个垂直条形图。要获得水平条形图,我们只需要交换xandy关键字:

alt.Chart(data).mark_bar().encode( y='a', x='average(b)' )

自定义图表可视化的外观

通常情况下,Altair 生成的统计图表都是以默认的形式展示。为了满足不同的可视化展示需求Altair 还提供了一个 API 来自定义可视化的外观。

例如,我们可以使用axis通道类的属性来指定轴标题,我们可以通过将方法的color关键字设置Chart.mark_*为任何有效的 HTML 颜色字符串来指定标记的

alt.Chart(data).mark_bar(color='firebrick').encode( alt.Y('a', title='category'), alt.X('average(b)' , title='avg(b) by category') )

将数据可视化后,可以使用Chart.save方法为任何图表生成一个独立 HTML 文档的简单示例:

chart = alt.Chart(data).mark_bar().encode(x='a',y='average(b)',
)
chart.save('chart.html')

或者利用Streamlit进行实时图表的预览:

import streamlit as st
import pandas as pd
import altair as alt# 在文件下运行本文件 streamlit run data.pydata = pd.DataFrame({'a': list('CCCDDDEEE'),'b': [2, 7, 4, 1, 2, 6, 8, 4, 7]})st.dataframe(data)chart = alt.Chart(data).mark_bar(color='firebrick').encode(alt.Y('a', title='category'),alt.X('average(b)' , title='avg(b) by category'))
st.altair_chart(chart)
bar(color='firebrick').encode(alt.Y('a', title='category'),alt.X('average(b)' , title='avg(b) by category'))
st.altair_chart(chart)

官方教程:https://altair-viz.github.io/

Python Altair统计图表快速入门相关推荐

  1. python新手教程 从零开始-Python零基础从零开始学习Python十分钟快速入门

    原标题:Python零基础从零开始学习Python十分钟快速入门 学习Python的,都知道Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python是一种动态解释型的 ...

  2. Python 股票分析快速入门

    Python 股票分析快速入门 这段时间股市又开始火爆起来了,隐约这透着点大牛市气息,多年不用的股票账户也找回来了.然后就想着用python做下股票分析,尝试制作自己的分析脚本,本篇教程是自己的一些笔 ...

  3. Python七天快速入门——第一天

    Python七天快速入门--第二天 Python七天快速入门--第三天 Python七天快速入门--第四天 上 Python七天快速入门--第四天 下 Python七天快速入门--第五天 Python ...

  4. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  5. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  6. 【Python数据科学快速入门系列 | 04】Numpy四则运算、矩阵运算和广播机制的爱恨情仇

    这是机器未来的第43篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126493989 文章目录 1. 概述 2. 四则运算 ...

  7. 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

    这是机器未来的第52篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226 <Python数据科学快速入 ...

  8. python requests下载图片_python读取图片大小Python Requests模块快速入门

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似.它比 urllib 更加方便,可以节约我们大量的工作,它比 urllib 更加 Pythoner. 安装 Re ...

  9. python 操作 zookeeper 快速入门

    python 操作 zookeeper 快速入门 文章目录 python 操作 zookeeper 快速入门 什么是zookeeper python 操作 zk 快速入门 zk节点 创建节点 查询节点 ...

最新文章

  1. rdd与mysql表 join_6、JdbcRDD读取mysql的数据
  2. MySQL中的行级锁,表级锁,页级锁
  3. C和C++中include 搜索路径的一般形式以及gcc搜索头文件的路径
  4. 私有云存储搭建(owncloud)
  5. 离开当前屏幕的判断方法_EXCEL 一个工作表如何快速拆分多个工作表的方法
  6. Python函数式编程简介(二)返回函数
  7. sql 中on和where的区别
  8. Python爬虫系列:判断目标网页编码的几种方法
  9. mysql 8 sql server_终于将 SQL Server 成功迁移至 MySQL8.0 啦!!!
  10. MindManager中读图工具的使用
  11. QT之布局管理器和QLayout
  12. Tomcat下载——tomcat7、tomcat8、tomcat9官网下载链接
  13. rar和zip文件加密的破解
  14. 诺基亚 8208支持java么_诺基亚8_诺基亚8208怎么上网_8208 诺基亚
  15. 边缘计算与智慧城市应用
  16. 30个专业配色网站, 让你配色从此更专业
  17. 廊坊金彩教育:店铺装修怎么更吸引客户
  18. Banner轮播图的基本使用
  19. Vue返回上一页保留数据
  20. 红色墙绘设计公司营销网站织梦模板

热门文章

  1. 如何做好销售数据分析?
  2. 调整打印机适应套打的边距
  3. PowerISO----百度百科
  4. 最少步数问题(BFS马走日)
  5. 一份给数据分析小白的指南
  6. word批量删除中英文间的多个空格
  7. Type interface com.haroro.dao.UserDao is not known to the MapperRegistry——MyBatis问题
  8. 十一、散列查找:电话聊天狂人
  9. 力偶对物体的转动效应,取决于---《建筑力学》机考复习题
  10. springboot集成普罗米修斯