Python数据可视化常用4大绘图库原理详解


Posted in Python onOctober 23, 2020

今天我们就用一篇文章,带大家梳理matplotlib、seaborn、plotly、pyecharts的绘图原理,让大家学起来不再那么费劲!

Python数据可视化常用4大绘图库原理详解

1. matplotlib绘图原理

关于matplotlib更详细的绘图说明,大家可以参考下面这篇文章,相信你看了以后一定学得会。

matplotlib绘图原理:http://suo.im/678FCo

1)绘图原理说明

通过我自己的学习和理解,我将matplotlib绘图原理高度总结为如下几步:

导库;创建figure画布对象;获取对应位置的axes坐标系对象;调用axes对象,进行对应位置的图形绘制;显示图形;

2)案例说明

# 1.导入相关库
import matplotlib as mpl
import matplotlib.pyplot as plt
# 2.创建figure画布对象
figure = plt.figure()
# 3.获取对应位置的axes坐标系对象
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,2)
# 4.调用axes对象,进行对应位置的图形绘制
axes1.plot([1,3,5,7],[4,9,6,8])
axes2.plot([1,2,4,5],[8,4,6,2])
# 5.显示图形
figure.show()

结果如下:

Python数据可视化常用4大绘图库原理详解

2. seaborn绘图原理

在这四个绘图库里面,只有matplotlib和seaborn存在一定的联系,其余绘图库之间都没有任何联系,就连绘图原理也都是不一样的。

seaborn是matplotlib的更高级的封装。因此学习seaborn之前,首先要知道matplotlib的绘图原理。由于seaborn是matplotlib的更高级的封装,对于matplotlib的那些调优参数设置,也都可以在使用seaborn绘制图形之后使用。

我们知道,使用matplotlib绘图,需要调节大量的绘图参数,需要记忆的东西很多。而seaborn基于matplotlib做了更高级的封装,使得绘图更加容易,它不需要了解大量的底层参数,就可以绘制出很多比较精致的图形。不仅如此,seaborn还兼容numpy、pandas数据结构,在组织数据上起了很大作用,从而更大程度上的帮助我们完成数据可视化。

由于seaborn的绘图原理,和matplotlib的绘图原理一致,这里也就不详细介绍了,大家可以参考上面matplotlib的绘图原理,来学习seaborn究竟如何绘图,这里还是提供一个网址给大家。

seaborn绘图原理:http://suo.im/5D3VPX

1)案例说明

# 1.导入相关库
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_excel("data.xlsx",sheet_name="数据源")

sns.set_style("dark")
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 注意:estimator表示对分组后的销售数量求和。默认是求均值。
sns.barplot(x="品牌",y="销售数量",data=df,color="steelblue",orient="v",estimator=sum)
plt.show()

结果如下:

Python数据可视化常用4大绘图库原理详解

注意:可以看到在上述的绘图代码中,你应该有这样一个感受,图中既有matplotlib的绘图代码,也有seaborn的绘图代码。其实就是这样的,我们就是按照matplobt的绘图原理进行图形绘制,只是有些地方改成seaborn特有的代码即可,剩下的调整格式,都可以使用matplotlib中的方法进行调整

3. plotly绘图原理

首先在介绍这个图的绘图原理之前,我们先简单介绍一下plotly这个绘图库。

  • plotly是一个基于javascript的绘图库,plotly绘图种类丰富,效果美观;
  • 易于保存与分享plotly的绘图结果,并且可以与Web无缝集成;
  • ploty默认的绘图结果,是一个HTML网页文件,通过浏览器可以直接查看;

它的绘图原理和matplotlib、seaborn没有任何关系,你需要单独去学习它。同样我还是提供了一个网址给你,让你更详细的学习plotly。

plotly绘图原理:http://suo.im/5vxNTu

1)绘图原理说明

通过我自己的学习和理解,我将plotly绘图原理高度总结为如下几步:

  • 绘制图形轨迹,在ployly里面叫做trace,每一个轨迹是一个trace。
  • 将轨迹包裹成一个列表,形成一个“轨迹列表”。一个轨迹放在一个列表中,多个轨迹也是放在一个列表中。
  • 创建画布的同时,并将上述的轨迹列表,传入到Figure()中。
  • 使用Layout()添加其他的绘图参数,完善图形。
  • 展示图形。

2)案例说明

import numpy as np
import pandas as pd
import plotly as py
import plotly.graph_objs as go
import plotly.expression as px
from plotly import tools

df = pd.read_excel("plot.xlsx")
# 1.绘制图形轨迹,在ployly里面叫做`trace`,每一个轨迹是一个trace。
trace0 = go.Scatter(x=df["年份"],y=df["城镇居民"],name="城镇居民")
trace1 = go.Scatter(x=df["年份"],y=df["农村居民"],name="农村居民")
# 2.将轨迹包裹成一个列表,形成一个“轨迹列表”。一个轨迹放在一个列表中,多个轨迹也是放在一个列表中。
data = [trace0,trace1]
# 3.创建画布的同时,并将上述的`轨迹列表`,传入到`Figure()`中。
fig = go.Figure(data)
# 4.使用`Layout()`添加其他的绘图参数,完善图形。
fig.update_layout(
  title="城乡居民家庭人均收入",
  xaxis_title="年份",
  yaxis_title="人均收入(元)"
)
# 5.展示图形。
fig.show()

结果如下:

Python数据可视化常用4大绘图库原理详解

4. pyecharts绘图原理

Echarts是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而python是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上了数据可视化时,pyecharts诞生了。

pyecharts分为v0.5和v1两个大版本,v0.5和v1两个版本不兼容,v1是一个全新的版本,因此我们的学习尽量都是基于v1版本进行操作。

和plotly一样,pyecharts的绘图原理也是完全不同于matplotlib和seaborn,我们需要额外的去学习它们的绘图原理,基于此,同样提供一个网址给你,让你更详细的学习pyecharts。

pyecharts的绘图原理:http://suo.im/5S1PF1

1)绘图原理说明

通过我自己的学习和理解,我将plotly绘图原理高度总结为如下几步:

  • 选择图表类型;
  • 声明图形类并添加数据;
  • 选择全局变量;
  • 显示及保存图表;

2)案例说明

# 1.选择图表类型:我们使用的是线图,就直接从charts模块中导入Line这个模块;
from pyecharts.charts import Line
import pyecharts.options as opts
import numpy as np

x = np.linspace(0,2 * np.pi,100)
y = np.sin(x)

(
 # 2.我们绘制的是Line线图,就需要实例化这个图形类,直接Line()即可;
 Line()
 # 3.添加数据,分别给x,y轴添加数据;
 .add_xaxis(xaxis_data=x)
 .add_yaxis(series_name="绘制线图",y_axis=y,label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(title_opts=opts.TitleOpts(title="我是标题",subtitle="我是副标题",title_link="https://www.baidu.com/"),
         tooltip_opts=opts.TooltipOpts())
).render_notebook() # 4.render_notebook()用于显示及保存图表;

结果如下:

Python数据可视化常用4大绘图库原理详解

小结

通过上面的学习,我相信肯定会让大家对于这些库的绘图原理,一定会有一个新的认识。

其实其实不管是任何编程软件的绘图库,都有它的绘图原理。我们与其盲目的去绘制各种各样的图形,不如先搞清楚它们的套路后,再去进行绘图库的图形练习,这样下去,我觉得大家会有一个很大的提高。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
python生成圆形图片的方法
Mar 25 Python
Python决策树之基于信息增益的特征选择示例
Jun 25 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
Python3 max()函数基础用法
Feb 19 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
Sep 26 Python
Python爬虫之App爬虫视频下载的实现
Dec 08 Python
Python 实现定积分与二重定积分的操作
May 26 Python
Python线程池与GIL全局锁实现抽奖小案例
Apr 13 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 #Python
python 带时区的日期格式化操作
Oct 23 #Python
Python可视化工具如何实现动态图表
Oct 23 #Python
python 匿名函数与三元运算学习笔记
Oct 23 #Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
Oct 23 #Python
Python+OpenCV图像处理——实现直线检测
Oct 23 #Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 #Python
You might like
PHP新手上路(二)
2006/10/09 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
Js中sort()方法的用法
2006/11/04 Javascript
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
用jscript启动sqlserver
2007/06/21 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
jquery获取节点名称
2015/04/26 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
20个常用Python运维库和模块
2018/02/12 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
html5开发三八女王节表白神器
2018/03/07 HTML / CSS
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
争先创优活动总结
2014/08/27 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
Redis如何一键部署脚本
2021/04/12 Redis
解决MySQL报“too many connections“错误
2022/04/19 MySQL
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS