精选文章 深度评测5大Python数据可视化工具 教你怎么选可视化工具?

深度评测5大Python数据可视化工具 教你怎么选可视化工具?

作者:编程歆妍 时间: 2020-07-24 10:25:57
编程歆妍 2020-07-24 10:25:57

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?1

指标说明

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?2

数据说明

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

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?3

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

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()

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?4

 

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?5

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?6

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()

最后生成的默认图像如下

深度评测5大Python数据可视化工具 教你怎么选可视化工具?7

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?8

Plotly

深度评测5大Python数据可视化工具 教你怎么选可视化工具?9

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)

深度评测5大Python数据可视化工具 教你怎么选可视化工具?10

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?11

Bokeh

深度评测5大Python数据可视化工具 教你怎么选可视化工具?12

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)

深度评测5大Python数据可视化工具 教你怎么选可视化工具?13

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?14

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?15

Seaborn

深度评测5大Python数据可视化工具 教你怎么选可视化工具?16

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

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

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?17

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

深度评测5大Python数据可视化工具 教你怎么选可视化工具?18

小结

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

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:数据结构二叉树前中后序遍历

下一篇:win10安装Ubuntu18.04双系统笔记

您可能感兴趣

  • 学计算机必看:程序员部落酋长,给计算机专业学生的 6 个建议!

    如果你喜欢编程,那么你真是受到了上天的眷顾。你是非常幸运的少数人之一,能够以自己喜欢的事谋生。大多数人没有这么幸运。你认为理所当然的观念“热爱你的工作”,其实是一个很现代的概念。通常的看法是,工作是一种让人很不开心的事,你为了拿工资才不得不去上班。 你工作的目的是为了攒下钱去干那些自己真正喜欢干的事,但是前提是你得等到65岁退休之后才行,而且还有不少条件。条件一,你的积蓄必须足够多;条件二,...

  • 「鹿班智能设计平台」是如何工作的

    目录 商业设计大脑的三大挑战 可控的视觉生成过程 机器如何学习设计 组成一,设计框架。 组成二,元素中心。 组成三,行动器。 组成四,评估网络。 视觉设计的四个层次 最基础的:临摹拓展。 第二层:场景表达。 第三层:创意洞见。 最后一层:创造趋势。 商业设计大脑的三大挑战 在开始做事情之前,我们遇到了三个比较严峻的挑战。 第一个挑战,缺少标注数据。今天所有的人工智能都基于大量的结构化标注数据...

  • 全数字化业务敏捷能力是数字经济环境下决定企业生死的关键能力

    一、全数字化业务敏捷能力是新数字时代的要求 数字经济时代,任何企业都逃脱不了全数字化的旋涡。数字化时代的特征就是信息技术变革、商业模式创新和生态产业融合的步伐越来越快。新的竞争对手具有天然的创新能力、快速反应能力等竞争优势,这将大大削弱处于市场领导企业的影响力或彻底革了他们的命。那么,这些巨型企业该如何应对呢? 1、数字化时代的商业模式 企业要想利于不败之地就要建立适应时代的商业模式,为客户...

  • 【面经】五面阿里巴巴达摩院

    目录 前言: 一面 2.5小时 二面 1小时 三面:主管面 四十五分钟 四面 交叉面 四十五分钟 前言: 这是五月我面试阿里达摩院C++开发工程师的面试记录,原载于我的牛客,虽然最后非常非常遗憾最后差一点,但是达摩院的五轮面试过程中自己学习到了很多东西,算是凉经吧,正好这段时间在复习(预习)期末,有时间整理整理,重新发表。 一面 2.5小时 不知道啥部门,不知道啥岗位,正在睡觉,没有任何预约...

  • 【Python基础】如何编写简洁美观的Python代码

    作者 | ANIRUDDHA BHANDARI 编译 | VK 来源 | Analytics Vidhya 概述 Python风格教程将使你能够编写整洁漂亮的Python代码 在这个风格教程中学习不同的Python约定和Python编程的其他细微差别 介绍 你有没有遇到过一段写得很糟糕的Python代码?我知道你们很多人都会点头的。 编写代码是数据科学家或分析师角色的一部分。另一方面,编写漂...

  • 基于生物特征信息的身份识别(指纹、面部识别的方式和原理)的使用问题的思考

    1.应用现状及应用案例介绍 近年来,随着互联网的飞速发展,各式各样的应用也不断发展,给我们的生活带来了极大的便捷。生活中,我们日常使用我们个人的指纹以及面部信息来识别个人身份,还有虹膜技术和声纹识别技术。 以上提到的四种技术,都是将我们的个人身份特征信息用于身份识别,但严格来说,我们的个人身份信息都是属于我们的个人隐私,个人隐私的界定是在个人生活中不愿为他人公开或知悉的秘密,判断是否属于个人...

  • 计算机必备专用英语词汇

    非常好的单词整理,转载一下当作笔记 1.单词说明:   command n. 命令,指令 [kə'mɑ:nd]   单词拼写 名词 单词含义 音标(发音)   提示:着重记忆单词对应的意思,有能力最好词性也记忆。 2.词性说明: n v vi vt conj prep pron adj adv 名词 动词 非及物动词 及物动词 连词 介词 代词 形容词 副词 3.单词列表: 1.file,n...

  • 转载:PCB设计大神的105个经验总结

    http://murata.eetrend.com/node/1001487 在电子产品设计中,PCB布局布线是最重要的一步,PCB布局布线的好坏将直接影响电路的性能。现在,虽然有很多软件可以实现PCB自动布局布线,但是随着信号频率不断提升,很多时候,工程师需要了解有关PCB布局布线的最基本的原则和技巧,这样才可以让自己的设计完美无缺,《PCB(印制电路板)布局布线100问》涵盖了PCB布局...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。