news 2026/6/1 18:17:27

ggplot2用户转Python?这8个可视化包让你爽到飞起

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ggplot2用户转Python?这8个可视化包让你爽到飞起

热衷于运用做项目的小伙伴难免会碰到这种状况: 在绘制图表之际, 选用哪种兼具美观与实用的可视化工具包? 往昔文章里呈现出漂亮图表之时, 总会有读者于后台留言询问该图表是借助什么工具制作而成的。接下来, 作者阐述了八种于中得以实现的可视化工具包, 其中部分包还能够应用于其他语言之中。赶紧来尝试一下你钟情于哪一个。

存在着诸多用以创建图形的方式, 然而究竟哪一种方式才是最优的, 当我们着手进行可视化操作之前, 需要率先明确一系列关乎图像目标的问题, 你是期望初步去了解数据的分布情形吗, 是想要在展示之时给人们留下难以磨灭的深刻印象吗, 抑或是你打算给某个人展示一个处于中间状态的平和、普通、缺乏突出特点的形象。

本文会把一些常用可视化包予以介绍, 这些包里有优点和缺点, 还分别适用于怎样的场景。此文章仅朝着2D图进行扩展, 给下一回讲3D图, 还有将讲商业报表留了一些空间, 然而这次讲的包里边, 众多都能够对对3D图以及商业报表给予很好的支持。

、 和

把这三个包放置到一处存在几个缘由: 其一, 和是构建于之上形成的, 在你运用或里的df.plot()之际, 所使用的实际上是他人以所撰写的代码。所以, 这些图形于美化层面是相近似的, 在进行自定义图形操作时所采用的语法也全都极为相近似。

一提到这些可视化的工具, 我脑海中就浮现出三个词: 探索()、数据(Data)、分析()。这些包对于初次探索数据而言是十分贴合的, 然而倘若要用于做演示的话, 这些包就显得不相适宜了。

它属于比较低级的库, 然而它用来所支持的自定义程度十分令人难以相信, 并且不要轻易地就把它排除在演示会用到的包外面, 不过另外存在其它更适宜做展示的工具。

可进行样式(style)选择, 其对如 和 xkcd 这般流行的美化工具予以模拟。以下是借助 以及相关工具所制作的示例图:

在着手处理篮球队薪资数据之际, 我想着要找出薪资中位数处于最高水平的团队。为了把结果呈现出来, 我把每个球队的工资用颜色标成了条形图, 以此来阐述球员加入哪一支球队才能够获取更好的待遇。

as sns

. as plt

=

'xkcd:', 'xkcd:ocean',

'xkcd:black','xkcd:royal ',

标注为“xkcd:royal”的内容, 以及标注为“xkcd:navy blue”的内容。

'xkcd: blue', 'xkcd:light ',

'xkcd: blue','xkcd:navy'

sns.(x=top10.Team,

y=top10.,

=).('Teams with ')

第一个小分句: 第二个图, 是回归实验残差的Q-Q图。第二个小分句, 这所谓第二个图的主要目的, 是展示怎样以尽量少的线条去做出一张有用的图。最后的小分句, 当然, 也许它有可能并不那么美观。

. as plt

scipy.stats as stats

# is a model

= .()-

统计数据。分布为“正态”, 绘图使用平面绘图工具。

plt.title(" Q-Q plot")

plt.show()

结果表明, 相关的那些工具, 效率是很高的, 然而, 对于演示来讲, 它们并非是最为合适的工具。

(2)

你或许会产生疑问, 「Aaron它可是R里极为常用的可视化包, 然而你并非要去撰写其相关的包? 」。众人已然于其中达成了某种成果, 将这个包涵盖从美化直至语法的所有内容都予以复制。

所有已看过的材料内, 它的全部都与……好似, 然而此包的益处在于它仰赖……包, 只是……包近来停用了某些方法, 致使……版本不相容。

若果你打算于R里使用实实在在的情况下(除去依赖关系之外, 它们的外观、其感觉以及语法均是相同的), 我于另外一篇文章之中针对此展开过探讨。

要这么讲的话, 若你非得于其中运用它, 那么你就必定得去安装0.19.2版本的它, 然而我却是建议你最好别为了使用较为低级的绘图包而去降低它的版本。

(我觉得也涵盖 的)具有重大影响力的缘由是它们借由「图形语法」去构造图片。其基本前提是你能够将图实例化, 接着分别增添各异的特征;换句话讲, 你能够分别针对标题、坐标轴、数据点以及趋势线等予以美化。

下头是, 代码之简易示例。咱先是, 以实例化图, 去设定美化属性与数据, 而后添加点、主题以及坐标轴和标题标签。

#All

(数据等于数据框, 审美映射, x轴位置给定, y轴位置给定, 分组依据为团队) 加上。

() +

theme(.="none") +

这个句子不符合中文语范进行改写, 你给出的句子应该是代码, 按照要求只能改写标准、规范的中文句子, 请确认后重新提供。

Bokeh

Bokeh有着一种美的特质。从概念层面来讲, Bokeh与某些事物存在类似之处, 它们都运用图形语法去构建图片, 然而Bokeh拥有能够制作出专业图形以及商业报表且具备便于使用特性的界面。为了将这一点阐释清楚, 我基于538 数据集撰写了制作直方图的代码:

as pd

from bokeh.

from bokeh.io show

# "Do you as ?"

# Prep

= .sum()

resps = .

#Bokeh

='',

='Count',

=list(resps))

你的内容似乎不太完整且存在格式书写问题, 请完善相关内容后再让我进行改写。

show(p2)

#

.plot(kind='bar')

用 Bokeh 表示调查结果

关于「你认为自己有男子汉气概吗? 」这一问题, 538 个人的答案由红色的条形图来表示。构建了优雅且专业的响应计数直方图的 9 至 14 行 Bokeh 代码, 其字体大小、y 轴刻度以及格式等方面都很合理。

我所编写的代码中, 有为坐标轴标记的部分, 还有为标题标记的部分, 另外还有给条形图增加颜色的部分, 以及给条形图添加边框的部分。在着手制作美观并且表现力强大的图片之际, 我更加倾向于运用Bokeh, 它已然帮我们完成了数目众多的美化工作。

用 表示相同的数据

具有蓝色的那张图, 是处于上面位置的第17行代码所对应的图。这两张呈现直方图样式的图, 其数值是相同的, 然而二者的目的并不相同。在进行探索性设置的情形下, 通过书写一行代码来查看数据, 是具备便利性的, 不过Bokeh所拥有的美化功能, 其强大程度超乎想象, 是极为厉害的。

包含 x 轴标签角度、背景线、y 轴刻度以及字体(大小、斜体、粗体)等在内的,Bokeh 所提供的各式各样便利, 通通都得在其中进行自定义, 下图呈现出一些随机趋势, 其具备更高的自定义程度, 具体表现为使用了图例且运用了不同的颜色与线条。

Bokeh 还是制作交互式商业报表的绝佳工具。

显得格外强大些, 然而借助它来从事设置以及创作图形的相关操作, 均需耗用大量的时间, 并且这些操作都并非直观的。于忙活了差不多大半个上午之后, 我基本上什么成果都没能做出来, 于是便当机立断地径直去吃饭了。我仅仅创建了那种不带坐标标签的条形图, 还有那种没办法将线条删除掉的“散点图”。Ploty 在入门之际存在着一些需要留意的要点:

但它也有优点,而且设置中的所有缺点都有相应的解决方法:

以下是我针对这个包编写的代码:

#plot 1 -

data =

go.Bar(x=.team,

y=.)

= go.(

title=go..Title(

text=' per by Team',

xref='paper',

x=0

),

xaxis=go..XAxis(

title = go..xaxis.Title(

text='Team',

font=dict(

=' New, ',

size=18,

color='#'

),

yaxis=go..YAxis(

title = go..yaxis.Title(

text=' /',

font=dict(

=' New, ',

size=18,

color='#'

),

=True,

='')

#plot 2 - at a

data =

go.(x=.,

y=.,

=go..(color='red',

size=3))

= go.(title="test",

xaxis=dict(title='why'),

yaxis=dict(title=''))

以下是改写后的: py.iplot, 等于data, 等于, 等于'-plot2', 等于''。

Image: image.png

表示不同 NBA 球队每分钟平均失误数的条形图。

表示薪水和在 NBA 的打球时间之间关系的散点图

总体来讲, 那种拆开包装就能立马使用的美化用具看上去蛮不错, 然而当我一而再再而三地去试着一个字一个字地复制文档以及更改坐标轴上面的标签之际却遭遇了失败。但接下来的那张图标示出了其具备的潜力, 以及我缘何要在它上面耗费好几个钟头:

页面上的一些示例图

Pygal

并非那么广为人知是Pygal 在名气这一点儿上, 跟其他常常会被用到的绘图包一样的是, 它运用图形框架语法以此来搭建图像。鉴于绘图目标是比较简易的, 所以这是一个相对而言较为简单的绘图包。运用 Pygal 是特别轻快容易的:

我搞 Pygal 时, 碰到的关键问题是图片渲染这儿, 得借助选项, 并且在网页浏览器里开放文档, 才能够瞧见我才建起的那玩意儿。

从最终的情况来看, 这存在着值得的特性发生了, 鉴于图片呈现出交互式的属性, 拥有令人感到满意且易于进行自定义操作的美化功能。总的来说, 这个包看上去状态良好, 然而在文件的创建环节以及渲染部分, 存在着麻烦的状况出现。

虽说是基于某方面的, 然而其却依然无疑是在图形分析以及可视化范畴内的堪称绝佳的解决办法。图形于我而言, 网络于我而言, 并非是我的专业所属领域, 可是它能够便捷快速地把网络之间的连接以图形形式予以展现。以下所呈现的是我根据一个简单图形而精心构造的存有显著差异的表示方式, 同时还包含了一些从斯坦福 SNAP 那里下载而来的代码(此代码是关于绘制小型的一种网络层面的)。

我按编号(1~10)用颜色编码了每个节点,代码如下:

= {

'' : range(len(G)),

'' : 300,

'width' : 1,

'' : False,

'cmap' : plt.cm.

nx.draw(G, **)

用于可视化上面提到的稀疏 图形的代码如下:

as nx

. as plt

f = open('data//1684.', 'r')

=

line.split() for line in f

f.close()

=

for circ in :

=

int(val) for val in circ

.()

G = nx.Graph()

for v in :

G.(v)

edges =

(net,2) for net in

for in edges:

G.()

= {

'' : 'lime',

'' : 3,

'width' : 1,

'' : False,

nx.draw(G, **)

这个图形稀疏程度极高, 是借由获取每个集群间隔最大值的方式, 将这种稀疏化的状况呈现出来的。

有着诸多的数据可视化的包, 然而却没办法去讲哪一个是最为出色的。期望在阅读这篇文章之后, 你能够明白在不一样的情形之下, 该怎么样去运用不一样的美化工具以及代码。

原文链接:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 18:16:10

如何3分钟高效解析B站视频?bilibili-parse工具完全指南

如何3分钟高效解析B站视频?bilibili-parse工具完全指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 在当今视频内容爆炸的时代,B站(哔哩哔哩)已成为…

作者头像 李华
网站建设 2026/6/1 18:06:59

技术团队如何构建语音交互能力:从架构设计到实战落地

1. 项目概述:一场静默的“声”命革命如果你最近留意过团队内部的工具更新日志,或者参加过几次产品规划会,可能会发现一个有趣的现象:那些曾经被我们手指敲击的键盘和鼠标点击的按钮,正悄然让位于一种更古老的交互方式—…

作者头像 李华
网站建设 2026/6/1 18:06:00

DMAFLUSHP指令原理与应用场景详解

1. DMAFLUSHP指令的核心作用解析 在DMA(直接内存访问)控制器与外围设备的交互中,DMAFLUSHP指令扮演着关键的角色。这个指令的主要功能是让DMA控制器通知外围设备清除其状态和控制寄存器,实现控制器与设备之间的同步重置。 当DMA控…

作者头像 李华
网站建设 2026/6/1 18:03:57

QMC音频解放者:打破平台枷锁,重获音乐自主权

QMC音频解放者:打破平台枷锁,重获音乐自主权 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾为QQ音乐下载的加密音频文件无法在其他播放器播…

作者头像 李华