丢弃传统可视化库!事实已证明,它更牛啊!
Python学习与数据挖掘
共 3721字,需浏览 8分钟
· 2020-11-30
关于 Python 可视化的方法,在之前文章中已多次讲解。感兴趣的同学可以查看上方话题:「Python可视化」。
今天我给大家分享的一个Python可视化库:「Altair」,这绝对是一款可以媲美 Pyechart、Plotly 的工具,下面给大家详细介绍。
Altair 简介
Altair 是一个开源 python 库,用于声明性统计可视化,基于 Vega 和 Vega-Lite。
Altair 提供了一个高效简洁的可视化语法,使我们能够快速构建各种统计可视化。我们可以通过构建优雅而有效的绘图来给更多时间来探索数据,而不仅仅是把更多的时间进行coding。
Altair 安装方法
可以使用以下方法安装 Altair 以及vega_datasets数据:
pip install altair vega_datasets
如果使用conda 包管理器,也可以这样:
conda install -c conda-forge altair vega_datasets
Altair 使用
1、交互式图表
构建一个交互式图表,使用的数据为「天气数据」,需要获取数据可以「文末获取」。制作可视化图表非常容易,我在下方给出完整代码,说明部分可以看代码备注。
import altair as alt
import pandas as pd
settle_data = pd.read_csv("seattle-weather.csv") # 导入数据集,数据见文末
settle_data.weather.unique() # 定义比例:根据天气类型的分布来绘制数据
scale = alt.Scale(domain=['sun', 'fog', 'drizzle', 'rain', 'snow'],
range=['#e7ba52', '#a7a7a7', '#aec7e8', '#1f77b4', '#9467bd'])
color = alt.Color('weather:N', scale=scale)
brush = alt.selection_interval(encodings=['x']) #添加互动功能
click = alt.selection_multi(encodings=['color'])
#顶部散射图:温度 Vs 日期
points = alt.Chart().mark_point().encode(
alt.X('monthdate(date):T', title='Date'),
alt.Y('temp_max:Q',
title='Maximum Daily Temperature (C)',
scale=alt.Scale(domain=[-5, 40])
),
color=alt.condition(brush, color, alt.value('lightgray')),
size=alt.Size('precipitation:Q', scale=alt.Scale(range=[5, 200]))
).properties(
width=550,
height=300
).add_selection(
brush
).transform_filter(
click
)
##########################
# 2. 底部栏图:天气类型
bars = alt.Chart().mark_bar().encode(
x='count()',
y='weather:N',
color=alt.condition(click, color, alt.value('lightgray')),
).transform_filter(
brush
).properties(
width=550,
).add_selection(
click
)
##########################
#3. 构建复合图:垂直串联两个图表
alt.vconcat(
points,
bars,
data=settle_data,
title="天气数据: 2012-2015"
)
效果展示
2、条形图
此示例显示具有正值和负值的条形图
import altair as alt
from vega_datasets import data
source = data.us_employment()
alt.Chart(source).mark_bar().encode(
x="month:T",
y="nonfarm_change:Q",
color=alt.condition(
alt.datum.nonfarm_change > 0,
alt.value("steelblue"), # The positive color
alt.value("orange") # The negative color
)
).properties(width=600)
效果展示
3、折线图
import altair as alt
from vega_datasets import data
source = data.stocks()
base = alt.Chart(source).properties(width=550)
line = base.mark_line().encode(
x='date',
y='price',
color='symbol'
)
rule = base.mark_rule().encode(
y='average(price)',
color='symbol',
size=alt.value(2)
)
line + rule
效果展示
4、散点图
import altair as alt
import pandas as pd
import numpy as np
np.random.seed(1)
source = pd.DataFrame({
'x': np.arange(100),
'A': np.random.randn(100).cumsum(),
'B': np.random.randn(100).cumsum(),
'C': np.random.randn(100).cumsum(),
})
base = alt.Chart(source).mark_circle(opacity=0.5).transform_fold(
fold=['A', 'B', 'C'],
as_=['category', 'y']
).encode(
alt.X('x:Q'),
alt.Y('y:Q'),
alt.Color('category:N')
)
base + base.transform_loess('x', 'y', groupby=['category']).mark_line(size=4)
效果展示
4、面积图
import altair as alt
from vega_datasets import data
source = data.iris()
alt.Chart(source).transform_fold(
['petalWidth',
'petalLength',
'sepalWidth',
'sepalLength'],
as_ = ['Measurement_type', 'value']
).transform_density(
density='value',
bandwidth=0.3,
groupby=['Measurement_type'],
extent= [0, 8],
counts = True,
steps=200
).mark_area().encode(
alt.X('value:Q'),
alt.Y('density:Q', stack='zero'),
alt.Color('Measurement_type:N')
).properties(width=400, height=100)
效果展示
总结
Altair 是一款非常优秀的可视化库,它可以画的图形非常多,并且具有高效简洁的语法,是时候舍弃一些传统的可视化库了!你有兴趣可以尝试一下!
数据领取方式:
长按扫码,发消息 [天气]
评论
互联网晚报 | 大麦网已退款凤凰传奇演唱会“柱子票”;钟薛高再成被执行人;iPhone 16或取消实体音量键和电源键
大麦网回应凤凰传奇演唱会买到“柱子票”:已退票退款据报道,凤凰传奇2024巡回演唱会常州站演出结束的第二天,有网友称自己在大麦网买到“柱子票”,因为观看效果不佳,要求退款被拒。23日,记者从涉事网友处了解到,大麦方面给出了退款建议,但被其拒绝,“我希望平台退款加赔偿,并重视屡次出现的‘柱子票’问题。
产品刘
0
delorean,一个超级实用的 Python 库!
作者通常周更,为了不错过更新,请点击上方“Python碎片”,“星标”公众号大家好,今天为大家分享一个超级实用的 Python 库 - delorean。Github地址:https://github.com/myusuf3/delorean/时间在计算机科学和软件开发中是一个至关重要的概念。Pyt
Python 碎片
0
高并发实战案例 100 讲,已更新24节,即将涨价,抓紧了
大家好,我是路人。本人亲自录制的《Java 高并发 & 微服务 & 性能调优实战案例 100 讲》已发布了 24 个课时,干货满满。59元,一杯咖啡的价格,100个实战案例,即将涨价到 99,需要的小伙伴速度啦,文末附下单方式。已发布 24 个课时1、SpringBoot实
路人甲Java
0
CleverCSV,一个神奇的 python 库!
我的小册:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。来源丨网络介绍CleverCSV 是一个基于 Python 的库,旨在提供比标准库 csv 更智能和灵活的方法来处理 CSV 文件。该库使用机器学习算法来探测 CSV 文件的正确拨号结构,从而
菜鸟学Python
0
一个小公司的技术开发心酸事(已倒闭)
往期热门文章:1、JetBrains 如何看待自己的软件在中国被频繁破解?2、程序员因Bug被要求归还4万多年终奖,网友:不还!3、一套万能通用的异步处理方案4、微服务全做错了!谷歌提出新方法,成本直接降9倍!5、IntelliJ IDEA 2024 首个大版本发布,好用到爆!作者:qiuwww来源
Java后端技术
1
.NET 开源工具库,集成超过1000个扩展方法
前言推荐一个.NET 开源项目,集成了超过1000个扩展方法。项目简介Z.ExtensionMethods是由zzzprojects公司开发并维护的一款开源库,为.NET开发人员提供一系列实用的扩展方法,可以减少重复劳动、提高开发效率,支持.NET Framework 和 .NET Core。该项目
dotNET全栈开发
10
推送总错过?快来给“它”加个星标吧!
您是否有这样的困扰:明明关注了“流媒体网”公众号,但总是收不到推文,某天打开公众号发现已经更新了很多内容,错过了许多重要的行业资讯。其实,解决这一问题的办法非常简单,只要把“流媒体网”公众号设置成“星标⭐”就可以啦。接下来就由小编告诉您如何设置“星标⭐”吧~只需三步,即可轻轻松松点亮星标⭐~第一步点
流媒体网
0
同样是37岁,P9和副厅哪个更牛逼plus?
点击上方牲产力关注我发现很多人对体制内职级分不清,很多认知仅仅来自于电视剧。而到了互联网行业,小厂原本就没有那么多人来分等级,多数等级文化还都是大厂带起来的,而且不同大厂可能还说法不一。看到一篇帖子,很有意思:说:同样是37岁,P9和副厅哪个更牛逼plus?能问出这种问题的,多半是互联网人了,而且是
TTTEED
1