大家好,小编为大家解答python数据可视化工具有哪些的问题。很多人还不知道python数据可视化优秀案例,现在让我们一起来看看吧!
Source code download: 本文相关源码
来源:早起Python
本文约3100字,建议阅读9分钟
本文通过真实绘图,为你深度测评Python五大数据可视化库。
[ 导读 ] 相信很多读者学习Python就是希望做出各种酷炫的可视化图表,当然你一定会听说过 Matplotlib、Pyecharts、seaborn、Plotly、Bokeh这五大工具,本文就将通过真实绘图来深度评测这五个Python数据可视化的库,看看到底这几种工具各有什么优缺点,在制作图表时该如何选择 不会c语言也可以学python。
-
指标说明

-
数据说明
from pyecharts.faker import Faker
x = Faker.choose()
y1 = Faker.values()
y2 = Faker.values()

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()
默认生成的两系列柱状图如下:


- 主观评分:85分

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()
最后生成的默认图像如下:

- 主观评分:77分


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)

-
主观评分:76分


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)


- 主观评分:71分


import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
接下来只要
一行代码就能生成我们要的图,默认配色也没有显得很难看:

- 主观评分:72分

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