百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Altair可视化从安装到交互(transformer attention可视化)

toyiye 2024-07-04 09:14 12 浏览 0 评论

Altair是一个基于Vega和Vega-Lite的Python可视化库,它 采用声明式语法来实现统计图的快速生成,从而帮助数据分析 人员快速洞察数据。在这个教程中,我们将通过9个小案例来 学习Altair可视化的一般步骤,包括安装、x/y轴的映射、数据 缩放等内容,相信有助于你快速了解并掌握Altair这一强大而 灵活的Python数据可视化工具。

机器学习相关教程:TensorFlow实战 | 机器学习基础 | 深入浅出Flask | Python基础

1、Altair可视化Python开发包简介

首先安装Altair可视化包和示例数据集:

pip install altair vega_datasets

然后引入altair和pandas:

import altair as alt
import pandas as pd

下面我们使用vega_data数据集中的gapminder数据来可视化 1995~2005年间全球部分国家的健康和人口数据。

from vega_datasets import data as vega_data
gap = pd.read_json(vega_data.gapminder.url)

gap.head(10)

数据看起来是这样:

我们先看看这里面包含哪几年的数据:

>>> gap.year.unique()

array([1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005])

我们更关心最近的数据,所以看看2005年的:

gap2005 = gap.loc[gap['year'] == 2005]

2、altair可视化 —— 设置X轴和Y轴

我们关心生育能力和寿命预期之间的关系,因此我们使用altair的 make_poin()来显示数据点:

alt.Chart(gap2005).mark_point().encode(
    alt.X('fertility'),
    alt.Y('life_expect')
)

绘制的altair图形看起来是这样:

上图中数据没有显示在图的中间部分,在altair中,我们可以使用 scale方法来进行调整。

3、altair可视化 —— 调整数据缩放比例

下面的代码使用altair的scale方法调整数据缩放比例:

alt.Chart(gap2005).mark_point().encode(
    alt.X('fertility', scale=alt.Scale(zero=False)),
    alt.Y('life_expect', scale=alt.Scale(zero=False))
)

调整缩放比例后altair可视化结果如下:

不错!不过,如果我们希望看到与生育能力和预期寿命相关的人口数量 该怎么做?我们应该利用另一个维度:人口数量。

alt.Chart(gap2005).mark_point().encode(
    alt.X('fertility', scale=alt.Scale(zero=False)),
    alt.Y('life_expect', scale=alt.Scale(zero=False)),
    alt.Size('pop')
)

altair绘制的结果如下图:

相当棒!右边的图标显示了不同大小的圆对应的人口数量。那么, 我们还可以在增加一个维度吗?当然,现在我们添加颜色!

4、altair可视化 —— 添加颜色维度

在下面的代码中,我们为atlair图添加颜色维度:

alt.Chart(gap2005).mark_point(filled=True).encode(
    alt.X('fertility:Q', scale=alt.Scale(zero=False)),
    alt.Y('life_expect:Q', scale=alt.Scale(zero=False)),
    alt.Size('pop:Q'),
    alt.Color('cluster:N'),
    alt.OpacityValue(0.5)
)

altair的可视化结果如下:

正如你上面看到的,在Altair中,我们可以指定数据的解释类型: N表示分类,Q表示数值,O表示排序,T表示时间点或间隔。在上面 的代码中,由于我希望将cluster数据解释为分类数据,因此使用:N来声明其类型。

为了让圆看起来更顺眼一些,我们使用filled=True对其上色, 并使用altair的OpacityValue设置了半透明。

5、Altair可视化 —— 显示每个点的信息

如果在一个Altair图表中有很多数据点,有没有办法在点击一个点的时候, 显示相关的国家、生育率、预期寿命等信息?当然!在Altair中,使用 Tooltip就可以实现这个功能。

alt.Chart(gap2005).mark_point(filled=True).encode(
    alt.X('fertility:Q', scale=alt.Scale(zero=False)),
    alt.Y('life_expect:Q', scale=alt.Scale(zero=False)),
    alt.Size('pop:Q'),
    alt.Color('cluster:N'),
    alt.OpacityValue(0.5),
    alt.Order('pop:Q', sort='descending'),
    tooltip = [alt.Tooltip('country:N'),
               alt.Tooltip('fertility:Q'),
               alt.Tooltip('life_expect:Q')
              ]
)

生成的Altair图如下所示:

能看到每个点对应的信息固然好,但是如果能同时查看多个数据点的 信息岂不是更好?好了不废话了,下面让我们看看如何创建可以交互 的Altair图!

6、Altair可视化 —— 选中单个点

selection_single()让我们可以为单个点添加可交互行为。当我们 点击一个点时,希望其他所有不相关的点都变成灰色,这可以通过 alt.condition()来实现。

selection = alt.selection_single();
alt.Chart(gap2005).mark_point(filled=True).encode(
    alt.X('fertility:Q', scale=alt.Scale(zero=False)),
    alt.Y('life_expect:Q', scale=alt.Scale(zero=False)),
    alt.Size('pop:Q'),
    alt.Order('pop:Q', sort='descending'),
    tooltip = [alt.Tooltip('country:N'),
               alt.Tooltip('fertility:Q'),
               alt.Tooltip('life_expect:Q')
              ],
    color=alt.condition(selection, 'cluster:N', alt.value('grey'))
).add_selection(selection)

得到的altair结果图如下:

7、Altair可视化 —— 选中多个点

前面我们实现了在Altair图上选中单个点的操作,不过我们对于 同时选中多个点更有兴趣。这可以利用altair的selection_multi() 来实现。

由于我们希望尝试不同的选择工具,因此先创建一个函数:

def plot(selection):
    return alt.Chart(gap2005).mark_point(filled=True).encode(
    alt.X('fertility:Q', scale=alt.Scale(zero=False)),
    alt.Y('life_expect:Q', scale=alt.Scale(zero=False)),
    alt.Size('pop:Q'),
    alt.Order('pop:Q', sort='descending'),
    tooltip = [alt.Tooltip('country:N'),
               alt.Tooltip('fertility:Q'),
               alt.Tooltip('life_expect:Q')
              ],
    color=alt.condition(selection, 'cluster:N', alt.value('grey'))
).add_selection(selection)

现在使用alt.hconcat()来尝试不同的选择并将得到的altair图拼接在一起:

alt.hconcat(
  plot(alt.selection_single()).properties(title='Single (Click)'),
  plot(alt.selection_multi()).properties(title='Multi (Shift-Click)'),
  plot(alt.selection_interval()).properties(title='Interval (Drag)')
)



8、Altair可视化 —— 时间周期的利用

我们已经看到了2005年的数据。那么,如果希望看到数据随时间的变化该怎么做? 在Altair中这很简单,使用altair的selection_single并设置 name=’select’和fields = [‘year’], 以及初始年份init={‘year’: 1955} 和时间范围bind=alt.binding_range(min=1955, max=2005, step=5):

select_year = alt.selection_single(
    name='select', fields=['year'], init={'year': 1955},
    bind=alt.binding_range(min=1955, max=2005, step=5)
)
alt.Chart(gap).mark_point(filled=True).encode(
    alt.X('fertility', scale=alt.Scale(zero=False)),
    alt.Y('life_expect', scale=alt.Scale(zero=False)),
    alt.Size('pop:Q'),
    alt.Color('cluster:N'),
    alt.Order('pop:Q', sort='descending'),
    
).add_selection(select_year).transform_filter(select_year)

得到的altair可视化结果如下:



真不错!现在我们只要用鼠标拉动滑杆,就可以很清楚地看到数据随时间 的变化情况了!

9、Altair可视化 —— 保存图表

当我们辛辛苦苦用Altair实现了数据可视化之后,面临的最后一个问题, 就是如何保存下来生成的图,以便在我们的网站或社交媒体上分享。在Altair 中这很简单,只要点击图表右上角的按钮就可以了!


原文链接:http://blog.hubwiz.com/2020/04/06/altair-interactive-plot/

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码