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字典get()方法用法分析
Apr 17 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
python实现csv格式文件转为asc格式文件的方法
Mar 23 Python
将tensorflow的ckpt模型存储为npy的实例
Jul 09 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Django Rest framework之认证的实现代码
Dec 17 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python守护进程实现过程详解
Feb 10 Python
如何在keras中添加自己的优化器(如adam等)
Jun 19 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
如何利用python读取micaps文件详解
Oct 18 Python
python里glob模块知识点总结
Jan 05 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP 存储文本换行实现方法
2010/01/05 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
javascript replace()正则替换实现代码
2010/02/26 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
javascript 面向对象封装与继承
2014/11/27 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
2020/12/31 Javascript
原生js轮播特效
2017/05/18 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
一套软件测试笔试题
2014/07/25 面试题
韩语专业本科生求职信
2013/10/01 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
商业房地产广告语
2014/03/13 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
诉讼授权委托书
2014/10/15 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
2014年班主任工作总结
2014/11/08 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS