可视化工具不知道怎么选?深度评测 5 大 Python 数据可视化工具

相信很多读者学习 Python 就是希望作出各种酷炫的可视化图表,当然你一定会听说过 Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh 这五大工具,本文就将通过真实绘图来深度评测这五个 Python 数据可视化的库,看看到底这几种工具各有什么优缺点,在制作图表时该如何选择。

指标说明

为了更清晰的了解这几款用于可视化的 Python 在作图时的异同,本文将使用同一组数据分别制作多系列条形图来对比,主要将通过以下几个指标来进行评测:

数据说明

本文使用的数据为 Pyecharts 中的 faker 数据

from pyecharts.faker import Faker
x = Faker.choose()
y1 = Faker.values()
y2 = Faker.values()

x 为一列品牌名称,y1/y2 为一列相同长度的无意义数据,接下来让我们使用不同的库对这组数据进行可视化!

01

Pyecharts

Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了,支持 30+ 种图表。在 pyecharts 中制作条形图首先需要导入相关库

from pyecharts import options as opts
from pyecharts.charts import Bar

接着是绘图并不做任何任何调整,首先创建一个 Bar 实例,接着添加 x 轴 y 轴数据,注意仅接收 list 格式数据,最后添加标题并设置在 notebook 中直接展示。总体来说还是比较符合正常的作图逻辑,整体代码量并不多

c = (
    Bar()
    .add_xaxis(x)
    .add_yaxis("商家A", y1)
    .add_yaxis("商家B", y2)
    .set_global_opts(title_opts=opts.TitleOpts(title="Pyecharts—柱状图", subtitle=""))
).render_notebook()

默认生成的两系列柱状图如下:

可以看到,该图支持交互式展示与点击,默认生成的样式也较为美观,并且 Pyecharts 有详细的中文文档与 demo,网上关于 Pyecharts 的讨论也较多,如果是刚接触的读者也能比较快的上手。当然如果对默认样式不满意的话,可以进行一些调整,由于文档十分完整,所以代码修改起来并不困难,比如可以修改主题并设置一些标记线、DataZoom,添加小组件等

总体来说,由于 Pyecharts 是基于 Echarts 制作的,因此生成图表比较美观,并且官方中文文档对相关设置讲解非常详细,有关 Pyecharts 的讨论也非常多,所以如果在使用过程中有相关疑问也很容易通过检索找到答案,但遗憾的是不支持使用 pandas 中的 series 数据,需要转换为 list 才可以使用,不过整体还是让我很满意的一款可视化库。主观评分:85

02

Matplotlib

Matplotlib应该是最广泛使用的 Python 可视化工具,支持的图形种类非常多,使用 Matplotlib 制作相同效果的图需要先导入相关库,并且并不支持原生中文所以还要设置下中文显示

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei'] 

接着就是绘图,但是相比较于 pyecharts 大多是往写好的代码里面添加数据、配置不同,matplotlib 大多数需要我们自己写代码,所以代码量可能稍多一点

width = 0.35
x1 = np.arange(len(x)) 

fig, ax = plt.subplots()
rects1 = ax.bar(x1 - width/2, y1, width, label='商家A')
rects2 = ax.bar(x1 + width/2, y2, width, label='商家B')

ax.set_title('Matplotlib—柱状图')
ax.set_xticks(x1)
ax.set_xticklabels(x)
ax.legend()

plt.show()

最后生成的默认图像如下

默认配色不是很好看但也没有很难看,看起来更学术一点,但是不支持交互式点击查看等操作,虽然代码量更多一点,但是由于 Matplotlib 的火热,网上关于 matplotlib 的资料比 Pyecharts 要多很多,所以写代码于调整代码的过程也并不复杂,整体主观评分 77 分

03

Plotly

Plotly也是一款非常强大的 Python 可视化库,Plotly 内置完整的交互能力及编辑工具,支持在线和离线模式,提供稳定的 API 以便与现有应用集成,既可以在 web 浏览器中展示数据图表,也可以存入本地拷贝。但是由于官方未提供中文文档,网上关于 Plotly 的教程也仅限于官方的一些 demo,对于一些详细的参数设置并没有太多资料,首先还是先导入相关库并设置 notebook 显示

import plotly
import plotly.offline as py
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=True)

接下来是绘图代码,首先要对数据先进行处理,剩下的基础配置其实和 Pyecharts 比较类似

trace0 = go.Bar(
    x = x,
    y = y1,
    name = '商家A',
)
trace1 = go.Bar(
    x = x,
    y = y2,
    name = '商家B',
)
data = [trace0,trace1]
layout = go.Layout(
        title={
        'text': "Plotly-柱状图",
        'y':0.9,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})
fig = go.Figure(data=data, layout=layout)
py.iplot(fig)

默认样式生成的图如上,配色也不难看,并且可以看到是支持交互式操作的,同时是默认添加 toolbox 小组件,可以更方便的查看,支持 30 多种图形,总体来说还是比较优秀的一个可视化工具,但是如果真要熟练使用的话可能需要一点时间用于查找相关资料,因为网上关于 Plotly 的资料不多,大多是基本使用的简单教程,如果想查找一些细节的操作比如我为了查找让标题居中的方法,百度之后用 Google 在国外某论坛找到类似问题并找到设置,主观评分:76

04

Bokeh

Bokeh是一个专门针对 Web 浏览器的呈现功能的交互式可视化 Python 库。这是 Bokeh 与其它可视化库最核心的区别,它可以做出像D3.js简洁漂亮的交互可视化效果,但是使用难度低于 D3.js,首先还是导入相关库

from bokeh.transform import dodge
import pandas as pd
from bokeh.core.properties import value
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from bokeh.io import output_notebook
output_notebook() # 导入notebook绘图模块
from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource# 导入图表绘制、图标展示模块 # 导入ColumnDataSource模块 # 导入dodge、value模块

相关依赖比上面三个要多出很多,并且 Bokeh 有自己的数据结构ColumnDataSource,所以要先对数据进行转换,接着就是创建画布、添加数据及设置

df = pd.DataFrame({'商家A':y1,'商家B':y2},
                 index = x_)
_x = ['商家A','商家B']    # 系列名
data = {'index':x_}
for i in _x:
    data[i] = df[i].tolist()# 生成数据,数据格式为dict
source = ColumnDataSource(data=data)# 将数据转化为ColumnDataSource对象

p = figure(x_range=x_, y_range=(0, 150), plot_height=350, title="boken-柱状图",tools="crosshair,pan,wheel_zoom,box_zoom,reset,box_select,lasso_select")

p.vbar(x=dodge('index', -0.1, range=p.x_range), top='商家A', width=0.2, source=source,color="#718dbf", legend=value("商家A"))
p.vbar(x=dodge('index',  0.1, range=p.x_range), top='商家B', width=0.2, source=source,color="#e84d60", legend=value("商家B"))# dodge(field_name, value, range=None) → 转换成一个可分组的对象,value为元素的位置(配合width设置)
p.xgrid.grid_line_color = None
p.legend.location = "top_left"
p.legend.orientation = "horizontal" # 其他参数设置
show(p)

可以看到,Bokeh 做出来的图也是支持交互的,不并且样式之类的看上去还是比较舒服的,不过上面这张图是经过调整颜色的,因为默认不对两个系列进行区分颜色

Bokeh 一个很明显的特点就是代码量较上面三个工具要多了很多,大多是在数据的处理上,并且和 Plotly 一样,有关 bokeh 相关的中文资料也不多,大多是入门型的基本使用于介绍,虽然从官方给出的图来看能作出很多比 pyecharts 更精美的图,但是查找相关参数的设置上将会耗费一定时间,主观评分 71 分。

05

Seaborn

seaborn官网给出的标题就知道,seaborn 是为了统计图表设计的,它是一种基于 matplotlib 的图形可视化库,也就是在 matplotlib 的基础上进行了更高级的 API 封装,从而使得作图更加容易,在大多数情况下使用 seaborn 就能做出很具有吸引力的图,而使用 matplotlib 就能制作具有更多特色的图,还是我们的数据,使用 Seaborn 制作首先需要导入相关库,由于是基于 Matplotlib,所以还是需要设置中文

import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] 

接下来只要一行代码就能生成我们要的图,默认配色也没有显得很难看

相比上面四种工具,从代码量上来看是非常简洁的,不过还是要先将数据转换为 DataFrame 格式,这里没在代码中体现,但依旧是最简短的代码,同时并不支持交互。并且 Seaborn 和 Plotly、bokeh 有一个共同的地方就是虽然强大,但是网上有关这三个库的教程、讨论都远少于 Pyecharts 与 Matplotlib,如果是新手的话可能很难快速通过搜索解决你遇到的问题,而需要自己研究别人的代码,主观评分 72

小结

以上就是对常见的 5 个 Python 数据可视化的评测,可能通过绘制条形图的方式去给每个工具打分不是非常合适,但我想你应该能够大致熟悉到每个库在绘图时的特点,同时也能在选择这些工具之前有一个简单的了解。最后正如我们文中介绍的一样,不同工具的应用场景、目标用户都不完全相同,所以我们在选择工具时需要先思考自己的使用场景,并且需要评估绘制目标图形的难度,就像有些工具虽然强大但是资料太少,不要为了追求高级的样式而浪费太多时间!如果你仍在犹豫学习哪一个工具的话,我的意见是 :熟练掌握一个工具之后,了解其他工具即可!最后留一个彩蛋,大家可以猜一猜文中的雷达图是使用文中提到的哪一款工具制作。

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值