altair 8800_使用Altair在Python中进行简明数据绘图

news/2024/11/25 18:50:51/

altair 8800

Python中可用的绘图库提供了多种根据您的喜好显示数据的方法,无论您是灵活性,设计,易用性还是特定样式。

Altair中的绘图提供了与其他解决方案不同的解决方案,我发现这比绘制完成的比例更简单。 感谢Vega (声明性绘图语言),它具有一个优雅的界面,该语言使您可以定义绘图的外观,而不用编写循环和条件语句来构造它们。

流利的绘图

我通过绘制相同的多栏图来比较每个Python绘图库。 在继续之前,请注意,您可能需要调整Python环境以使此代码运行,包括以下内容。

  • 安装最新版本的Python( Linux , Mac和Windows的说明 )
  • 验证Python版本是否与本教程中使用的库兼容

数据可在线获得,并可使用熊猫导入:

import pandas as pd
df = pd. read_csv ( 'https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv' )

现在我们准备出发了。 作为比较,这是我们在Matplotlib中绘制的图:

Matplotlib UK election results

Matplotlib图需要16行代码来创建,包括手动计算每个条的位置。

这是在Altair中进行类似绘制的方法:

import altair as alt

chart = alt. Chart ( df ) . mark_bar ( ) . encode (
x = 'party' ,
y = 'seats' ,
column = 'year' ,
color = 'party' ,
)

chart. save ( 'altair-elections.html' )

更简洁! 与Seaborn一样,Altair处理的数据每个变量只有一列( Long Form )。 这使您可以将每个变量映射到绘图的某个方面,Altair称这些方面为“通道”。 在我们的示例中,我们希望每个partyx轴上有一个小节,我们希望每个方在y轴上获胜的seats ,并且希望将这些小节按year分组到s column 。 我们也想按partycolor 。 这就是您用语言描述它的方式,而这正是代码中所说的!

这是情节的样子:

Altair plot with default styling

调整样式

year组显示在中间,中间有一点空白-这只是Altair多栏图的一个功能,这不是问题。

但是,我们确实要进行其他一些小的样式改进。

非整数值

两个非整数年份名称( Feb 1974Oct 1974 Feb 1974 Oct 1974 )显示为NaN 。 我们可以通过将year值转换为字符串来解决这些问题:

     df [ 'year' ] = df [ 'year' ] . astype ( str ) 

指定排序顺序

然后,我们还需要告诉Altair如何对数据进行排序。 Altair允许我们通过向其传递Column对象来指定有关column通道的更多详细信息。 因此,我们告诉它按照数据在DataFrame中出现的顺序进行排序:

chart = alt. Chart ( df ) . mark_bar ( ) . encode (
# ...
column = alt. Column ( 'year' , sort = list ( df [ 'year' ] ) , title = None ) ,
# ...
)

删除轴标题

我们通过设置title=None从图的顶部删除了“ year”标签。 我们还从每个列中删除“ party”标签:

chart = alt. Chart ( df ) . mark_bar ( ) . encode (
x = alt. X ( 'party' , title = None ) ,
# ...
)

指定色彩图

最后,我们要指定自己的颜色以用于条形图。 Altair使我们可以指定domain值和range颜色之间的映射,这正是我们所需要的:

cmap = {
'Conservative' : '#0343df' ,
'Labour' : '#e50000' ,
'Liberal' : '#ffff14' ,
'Others' : '#929591' ,
}

chart = alt. Chart ( df ) . mark_bar ( ) . encode (
# ...
color = alt. Color ( 'party' , scale = alt. Scale ( domain = list ( cmap. keys ( ) ) , range = list ( cmap. values ( ) ) ) )
)

带有样式调整的最终代码

在应用了这些样式调整之后,我们的代码看起来就不那么令人愉快了,但是它仍然使用使Altair如此可伸缩的声明性方法。 我们仍然将数据中的自变量分配给绘图的各个方面,而不是像在Matplotlib中通常需要执行的那样执行复杂的数据操作。 唯一的区别是,变量名现在被包裹在alt.X()这样的对象中,这些对象使我们可以调整它们的显示方式:

import altair as alt
from votes import long as df

cmap = {
'Conservative' : '#0343df' ,
'Labour' : '#e50000' ,
'Liberal' : '#ffff14' ,
'Others' : '#929591' ,
}

df [ 'year' ] = df [ 'year' ] . astype ( str )

# We're still assigning, e.g. 'party' to x, but now we've wrapped it
# in alt.X in order to specify its styling
chart = alt. Chart ( df ) . mark_bar ( ) . encode (
x = alt. X ( 'party' , title = None ) ,
y = 'seats' ,
column = alt. Column ( 'year' , sort = list ( df [ 'year' ] ) , title = None ) ,
color = alt. Color ( 'party' , scale = alt. Scale ( domain = list ( cmap. keys ( ) ) , range = list ( cmap. values ( ) ) ) )
)

chart. save ( 'altair-elections.html' )

公平地说,与Matplotlib一样,我们现在达到的代码行数(16)与此处使用的相同!

这是应用了样式调整的Altair图:

The Altair plot with our custom styling

结论  

尽管使用Altair进行绘图所需的代码量与其他库相似,但其声明性绘图语言增加了一层我已逐渐意识到的复杂性。 Altair还提供了一种完全独立的方法来调整和调整样式,从而使该语法不受用于绘图的代码块的影响。 考虑使用Python的绘图解决方案时,Altair是另一个很棒的库。 您可以在Anvil (使用帐户) 上交互式运行此代码,也可以使用此开源运行时本地运行 。

---

本文基于Anvil博客上Altair中的 P 抽签,并经允许重复使用。

翻译自: https://opensource.com/article/20/6/altair-python

altair 8800


http://www.ppmy.cn/news/159653.html

相关文章

Perten谷物蛋白分析仪维修IM8800红外光谱仪维修

瑞典Perten谷物分析仪维修IM8800使用近红外(NIR)技术来测量谷物和油籽中的蛋白和油脂含量。它带有GPS模块的高度便携设计适合想要在田间测试谷物的农民,也可以生成蛋白地图,帮助他们做出明智的收获和储存决策。可选模块还可用于快…

黑莓8800拆机

用黑莓几个月了,买黑莓之前就听说黑莓的水很深,补习了一下才敢去不夜城的,结果买的时候问的第一家就出奇的便宜,550,想着估计也不会怎么好,但是那个老板一直说他是做上海黑莓批发的,所以价格低&…

一套价值8800元的excel教程

链接: http://pan.baidu.com/s/1hqFFwXY 密码: 3p2k

一套价值8800元的EXCEL教程,希望下载的都能有所帮助

链接:https://pan.baidu.com/s/1F0pObV_1oHijjXtXz9JctQ 提取码:dt8r

IBM8800存储,光钎交换机384B,主机Linux,二代支付前置

现将5月9日晚二代支付划盘过程整理,在IBM工程师的支持下,进行划zone和ds8800创建lun脚本以及suse多路径软件安装配置。 由于我的不熟练及划zone时8800在交换机上对应的DOMAIN ID误认为384b的domain id, 导致后面suse主机认盘报错,…

计算机的术语中lcT,技术|模拟 Altair 8800 计算机

Altair 8800 是 1975 年发布的自建家用电脑套件。Altair 基本上是第一台个人电脑(PC),虽然 PC 这个名词好几年前就出现了。对 Dell、HP 或者 Macbook 而言它是亚当(或者夏娃)。 有些人认为为 Z80(与 Altair 的 Intel 8080 密切相关的处理器)编写仿真器真是太棒了&am…

8800个机器学习开源项目为你精选TOP30!

授权自AI科技大本营(ID: rgznai100) 本文共图文结合,建议阅读5分钟。本文为大家带来了30个广受好评的机器学习开源项目。 最近,Mybridge发布了一篇文章,对比了过去一年中机器学习领域大约8800个开源项目后,选出30个201…

集成海康8800视频遇到的坑

前一篇文字主要介绍了集成海康8800,这篇主要说一下遇到的一个坑,先啰嗦两句, 我有两部手机一部小米5s,一部红米note 刷的Android原生6.0.1系统,模拟器用的是5.1系统,同时还用了一个模拟器,在代码…