Python声明式统计可视化库 altair-GitHub鉴赏官

news2024/9/21 14:32:50

推荐理由:Vega-Altair是 Python 的声明式统计可视化库。借助 Vega-Altair,您可以花更多时间来理解数据及其含义。Vega-Altair 的 API 简单、友好且一致,建立在强大的 Vega-Lite JSON 规范之上。这种优雅的简单性可以用最少的代码产生漂亮而有效的可视化效果。Vega-Altair 最初由Jake Vanderplas和Brian Granger与UW Interactive Data Lab密切合作开发。

适用人群:Python开发

推荐指数:7.9k

项目名称:altair

=========================================================================

牛郎星

https://altair-viz.github.io

Vega-Altair是 Python 的声明式统计可视化库。借助 Vega-Altair,您可以花更多时间来理解数据及其含义。Vega-Altair 的 API 简单、友好且一致,并建立在强大的 Vega-Lite JSON 规范之上。这种优雅的简单性可以用最少的代码产生漂亮而有效的可视化效果。Vega-Altair 最初由Jake Vanderplas和Brian Granger与UW Interactive Data Lab密切合作开发。

Vega-Altair 文档

请参阅Vega-Altair 的文档站点以及 Vega-Altair 的教程笔记本。

例子

下面是一个使用 Vega-Altair 在 JupyterLab 中使用原生 Vega-Lite 渲染器快速可视化和显示数据集的示例:

 
import altair as alt
# load a simple dataset as a pandas DataFrame
from vega_datasets import data
cars = data.cars()
 
alt.Chart(cars).mark_point().encode(
    x=`Horsepower`,
    y=`Miles_per_Gallon`,
    color=`Origin`,
)

继承自 Vega-Lite 的 Vega-Altair 的独特功能之一是一种不仅可视化而且交互的声明性语法。通过对上面的示例进行一些修改,我们可以创建一个链接的直方图,该直方图根据散点图的选择进行过滤。

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

让您的问题得到解答

如果您有文档中未解决的问题,可以通过多种方式提出:

  • 打开一个Github 问题
  • 发布一个StackOverflow 问题(一定要使用altair标签)
  • 在Vega-Altair Google Group上提问

我们会尽力解答您的问题

用于统计可视化的 Python API

Vega-Altair 提供了一个 Python API,用于以声明方式构建统计可视化。通过统计可视化,我们的意思是:

  • 数据源DataFrame由不同数据类型(定量、有序、名义和日期/时间)的列组成的。
  • DataFrame是一种整洁的格式 ,其中行对应于样本,列对应于观察到的变量。
  • 使用分组数据转换将数据映射到视觉属性(位置、颜色、大小、形状、面等)。

Vega-Altair API 不包含实际的可视化渲染代码,而是按照 Vega-Lite规范发出 JSON 数据结构。生成的 Vega-Lite JSON 数据可以在以下用户界面中呈现:

  • Jupyter 笔记本(通过安装ipyvega)。
  • JupyterLab(不需要额外的依赖)。
  • nteract(不需要额外的依赖)。

特征

  • 基于 traitlets的精心设计的声明式 Python API 。
  • 自动生成的内部 Python API,可确保可视化经过类型检查并完全符合Vega-Lite 规范。
  • 在 GitHub 和nbviewer上的实时 Jupyter Notebook、JupyterLab、nteract 中显示可视化 。
  • 将可视化导出为 PNG/SVG 图像、独立 HTML 页面和 在线 Vega-Lite 编辑器。
  • 将可视化序列化为 JSON 文件。
  • 通过示例库中的数十个示例探索 Vega-Altair

安装

使用Vega-Altair进行可视化,需要安装两套工具

  1. 核心 Vega-Altair 包及其依赖项
  2. 您希望使用的前端渲染器(即Jupyter Notebook、 JupyterLabnteract

Vega-Altair 可以pipconda. 有关完整安装说明,请参阅 Installation — Altair 4.2.0 documentation

示例和教程笔记本

我们维护一个单独的 Jupyter Notebooks Github 存储库,其中包含交互式教程和示例:

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

要使用活页夹或 Colab使用这些笔记本启动实时笔记本服务器,请单击以下标志之一:

项目理念

Python 中存在许多优秀的绘图库,包括主要的:

  • Matplotlib
  • 背景虚化
  • 海波恩
  • 闪电
  • 剧情
  • Pandas 内置绘图
  • 全息视图
  • 可视化
  • pygg

每个库都能很好地完成一组特定的事情。

用户挑战

然而,如此多的选项给用户带来了很大的困难,因为他们必须费力地浏览所有这些 API 才能找到最适合手头任务的 API。这些库都没有针对高级统计可视化进行优化,因此用户必须使用混杂的 API 来组装自己的库。对于刚刚学习数据科学的个人来说,这迫使他们专注于学习 API 而不是探索他们的数据。

另一个挑战是当前的绘图 API 需要用户编写代码,即使是可视化的附带细节也是如此。这会导致不幸和不必要的认知负担,因为通常可以使用基本信息(例如感兴趣的列和这些列的数据类型)来推断可视化类型(直方图、散点图等)。

例如,如果您对两个数字列的可视化感兴趣,散点图几乎肯定是一个很好的起点。如果向其添加分类列,您可能希望使用颜色或构面对该列进行编码。如果有时难以推断可视化效果,一个简单的用户界面可以构建可视化效果而无需任何编码。 Tableau和Interactive Data Lab的 Polestar和 Voyager是此类 UI 的绝佳示例。

设计方法和解决方案

我们相信,无需创建另一个具有编程 API 和内置渲染的可视化库,就可以解决这些挑战。Vega-Altair 构建可视化的方法使用分层设计,充分利用现有可视化库的全部功能:

  1. 创建一个受约束的、简单的 Python API (Vega-Altair),它是纯声明式的
  2. 使用 API (Vega-Altair) 发出遵循 Vega-Lite 规范的 JSON 输出
  3. 使用现有的可视化库渲染该规范

这种方法使用户能够最初使用更简单的 API 执行探索性可视化,为他们的用例选择合适的渲染器,然后利用该渲染器的全部功能进行更高级的绘图定制。

我们意识到,与 Matplotlib、Bokeh 等的完整编程 API 相比,声明性 API 必然会受到限制。我们认为这是一种深思熟虑的设计选择,可以简化探索性可视化的用户体验。

开发安装

Vega-Altair 需要以下依赖项:

  • 熊猫
  • 特质
  • IPython

如果您已克隆存储库,请从存储库的根目录运行以下命令:

pip install -e .[dev]

如果您不想克隆存储库,可以使用以下方式安装:

pip install git+https://github.com/altair-viz/altair

测试

要运行测试套件,您必须安装py.test。要运行测试,请使用

py.test --pyargs altair

--pyargs(如果您从源代码检出运行测试,则可以省略该标志)。

如果您在学术工作中使用 Vega-Altair,请考虑引用Journal of Open Source Software: Altair: Interactive Statistical Visualizations for Python作为

 
@article{VanderPlas2018,
    doi = {10.21105/joss.01057},
    url = {https://doi.org/10.21105/joss.01057},
    year = {2018},
    publisher = {The Open Journal},
    volume = {3},
    number = {32},
    pages = {1057},
    author = {Jacob VanderPlas and Brian Granger and Jeffrey Heer and Dominik Moritz and Kanit Wongsuphasawat and Arvind Satyanarayan and Eitan Lees and Ilia Timofeev and Ben Welsh and Scott Sievert},
    title = {Altair: Interactive Statistical Visualizations for Python},
    journal = {Journal of Open Source Software}
}

请另外考虑引用Vega-Altair 基于的vega-lite项目: https ://dl.acm.org/doi/10.1109/TVCG.2016.2599030


@article{Satyanarayan2017,
    author={Satyanarayan, Arvind and Moritz, Dominik and Wongsuphasawat, Kanit and Heer, Jeffrey},
    title={Vega-Lite: A Grammar of Interactive Graphics},
    journal={IEEE transactions on visualization and computer graphics},
    year={2017},
    volume={23},
    number={1},
    pages={341-350},
    publisher={IEEE}
} 

Vega-Altair 从何而来?

织女星项目以天琴座中最亮的恒星命名;附近的牵牛星是天鹰座中最亮的恒星,它与天津四和织女星一起构成北半球的星群,即夏季大三角。

开源地址

GitHub - altair-viz/altair: Declarative statistical visualization library for Python

开源是一种精神,致敬屏幕背后的你!

996技术站 - 活在未来 | KingSun966技术站,极客带你看世界!https://www.996station.com/

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

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

相关文章

FT2004(D2000)开发实战之在线开发GPIO LED程序

一 在线开发GPIO LED程序 分析GPIO LED原理图 从飞腾FT2004原理图可知,开发板将GPIO1_A3和GPIO1_A4连接到LED上,具体如下: 开发板将GPIO1_A3和GPIO1_A4连接到LED上,因此代码初始化时需要注意以下几点: => 打开/dev/gpiochip1设备 => gpio偏移量为3和4创建led.c roo…

OpenShift 4 - 从 FreeIPA/RHIdM 向 RHSSO 同步用户和组

《OpenShift / RHEL / DevSecOps / Ansible 汇总目录》 说明:本文已经在 OpenShift 4.11 环境中验证 文章目录安装 FreeIPA/RHIdM在 FreeIPA/RHIdM 中添加用户和组从 FreeIPA/RHIdM 向 RHSSO 同步用户和组参考红帽 RHIdM 基于开源项目 FreeIPA,其内部提供…

Windows Access Token

Windows Access Token Windows Token其实叫Access Token(访问令牌),它是一个描 述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, 都会生成一个Access Token,这个Token在用户创建进程或者线程 时会被使用,不断的拷贝…

如何选择和使用腾讯云服务器的方法新手教程

本文将介绍如何选择和使用腾讯云服务器的方法新手教程。云服务器能帮助快速构建更稳定、安全的应用,降低开发运维的难度和整体IT成本。腾讯云CVM云服务器提供多种类型的实例、操作系统和软件包。各实例中的 CPU、内存、硬盘和带宽可以灵活调整,以满足应用…

C++11中可变参数模板使用

在看同事编写的代码&#xff0c;发现有如下的代码&#xff0c;因为没用过&#xff0c;所以查了一下这是什么语法&#xff0c;通过查询资料知道了这是C11中增加的可变参数模板。 template<class T, class ...Args> bool GetValue(T &value, Args &&...args) c…

12.2-12.4总结

12.2 明明跟着Vue3的视频学的&#xff0c;结果今天发现我学的都是vue2的写法&#xff0c;导致网上查阅资料调用组件有很多东西看不懂。设置langts也用不了&#xff0c;所以去查文档&#xff0c;增加配置了。 -安装vue-cli手脚架 解决lang"ts"报错http://t.csdn.cn/…

【力扣周总结】

题目汇总 判断括号的合法 #20 有效的括号&#xff08;栈问题 stack &#xff09;#921. 使括号有效的最少添加&#xff08;纯逻辑题&#xff09;#1541. 平衡括号字符串的最少插入次数&#xff08;纯逻辑题&#xff09; 单调(递减)栈 - Next Greater Element 题型 496. 下一个…

计算机毕业设计源码——基于Android的真人社交游戏辅助应用开发

编号 本科生毕业设计&#xff08;论文&#xff09; 题目&#xff1a; 真人社交游戏辅助应用开发 专业 学 号 学生姓名 指导教师 摘 要 时至今日&#xff0c;社交已成为人们生活中必不可少的一部分&#xff0c;社交网络的盛行已经成为一种必然趋势&#xff0e;与此同时&a…

央企招聘:正式编制!八险三金!各项福利!中国邮政招人啦!

中国邮政薪酬待遇情况 &#xff08;仅供参考&#xff09; &#xff08;一&#xff09;薪酬水平 1.邮储总行&#xff1a;刚入职有六个月实习期&#xff0c;月薪6k左右&#xff0c;转正以后一年到手大概25w&#xff0c;在大行中处于中等偏上。利润中心等部门可能更高一些&#…

Java基于JSP的幼儿园管理系统

幼儿是祖国的花朵,是未来国家建设的接班人。如果能够让幼儿园更好的对院所内部进行更好的管理是很多家长和幼儿园的工作人员所关心的问题。为此我开发了幼儿园管理系统,让家长和院所的管理人员能够更好的进行沟通,从而到达更好的培养幼儿和让家长更好的了解自己孩子生活教育问题…

springboot自定义参数解析器

springboot自定义参数解析器1.前言2.springMVC参数解析器3.如何自定义参数解析器4测试1.前言 1.springMVC是如何把参数解析完毕后注入到controller方法参数上的呢&#xff1f;在javaweb阶段&#xff0c;我们都学过使用HttpServletRequest这个对象获取参数&#xff0c;比如 req…

Dubbo-服务暴露

前言 Dubbo源码阅读分享系列文章&#xff0c;欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrapper 注册中心 Dubbo-聊聊注册中心的设计 Dubbo-时间轮设计 通信 Dubbo-聊聊通信模块设计 RPC 聊聊Dubbo协议 …

【编程题】【Scratch四级】2022.09 绘制图形

绘制图形 1. 准备工作 &#xff08;1&#xff09;默认小猫角色&#xff0c;默认白色背景。 2. 功能实现 &#xff08;1&#xff09;绘制出如上图所示图案&#xff0c;图形的中心在舞台中心点&#xff1b; &#xff08;2&#xff09;图形由12条蓝红相间&#xff0c;长度为80…

[附源码]Python计算机毕业设计Django咖啡销售平台

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

最强大脑记忆曲线(13)--应用程序的加密及授权码的实现

加密和授权一、python程序加密与授权的思考二、python文件 加密三、注册机代码目前我的小项目“最强大脑记忆曲线”已经可以出1.0版了&#xff0c;发布之前的最后一个环节就是给应用程序加密&#xff0c;并增加授权码了。关于这些&#xff0c;我之前思考过很多&#xff0c;因为…

【数据结构】二叉树OJ练习

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 文章目录一、二叉树的最小深度二、单值二叉树三、相同的树四、另一棵树的子树五、翻转二叉树六、…

毫米波传感器原理介绍:测速_1相位

在前文中&#xff0c;我们分析了 IF信号的频率&#xff0c;并展示了该频率与物体到雷达的距离 成正比。在本文中&#xff0c;我们将探讨IF 信号的相位。如果我们希望了解 FMCW 雷达响应物体极小位移的能力&#xff0c;那么研究相位就非常重要。雷达正是凭此非常快速且准确地测量…

Java 基础之线程

线程是 cpu 可以调度的最小单元&#xff0c;多线程可以利用 cpu 轮询时间片的特点&#xff0c;在一个线程进入阻塞状态时&#xff0c;快速切换到其余线程执行其余操作&#xff0c;减少用户的等待响应时间。所以我们需要了解线程的基本概念&#xff0c;如何启动线程以及怎么去控…

最短路径(Dijkstra算法与Floyd算法)

一、Dijkstra算法 Dijkstra算法与之前学习过的Prim算法有些相似之处。我们直接通过一个例子来讲解 假设要求的是A->E之间的最短路径。首先我们来列出顶点A到其他各顶点的路径长度&#xff1a;A->D 2&#xff0c;A->B 6&#xff0c;A->C 1&#xff0c;A->E…

MySQL主从复制

MySQL主从复制 MySQL主从复制原理 主服务器在更新数据前&#xff0c;会写入硬盘&#xff0c;银盘在再将数据写入二进制日志 从服务器开启I/O线程&#xff0c;Master节点为每个I/O线程启动一个dump线程用于发送二进制事件到从服务器的中继日志中 从服务器的sql线程开启&…