Matplotlib数据可视化方法总结
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
作者:橡鱼 转自:Datawhale
数据可视化,就是指将结构或非结构数据转换成适当的可视化图表,然后将隐藏在数据中的信息直接展现于人们面前。相比传统的用表格或文档展现数据的方式,可视化能将数据以更加直观的方式展现出来,使数据更加客观、更具说服力。
数据可视化已经被用于工作科研的方方面面,如工作报表、科研论文等,成为了不可或缺的基础技能。现在,就让我们一起来学习下数据可视化的基础知识。
一、 常用可视化工具
Python有许多用于数据可视化的库,例如常见的有seaborn、pyecharts(echarts的Python版本)、ggplot(移植于R语言的ggplot2,但是有些差别,Python有其他方法可以调用R语言的ggplot2)、bokeh、Plotly(同时支持Python和R语言)等等,这些大多是基于Matplotlib进行开发封装的。
Matplotlib是一个Python 2D绘图库(使用Matplotlib发布的mpl_toolkits库可以画3D图形 ),能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表。
Matplotlib 是 Python 最著名的绘图库,它提供了一整套和 MATLAB 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,使用在Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等上面。
二、 Matplotlib 初识
1. 例子
Matplotlib的图像是画在figure(如windows,jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。最简单的创建figure以及axes的方式是通过pyplot.subplots命令,创建axes以后,可以使用Axes.plot绘制最简易的折线图。
声明:以下使用的是IPython Shell
%matplotlib # 在IPython Shell调用Matplotlib绘图接口,需要加这行代码
import matplotlib.pyplot as plt
import numpy as npfig, ax= plt.subplots() # 创建一个包含一个axes的figure# 绘图
ax.plot([1, 2, 3, 4], [1, 4, 3, 2])
这里有一个小知识点,很小很小,但是对于刚刚接触数据可视化的新手可能容易弄混。ax.plot([1, 2, 3, 4], [1, 4, 3, 2])
这句代码里面第一个参数是数据集里各个数据点的X值的集合,第二个参数数据集里各个数据点的Y值的集合。所以这里输入的参数值并不是数学上常见的成对坐标点如(x1,y1)、(x2,y2)、...、(xn,yn)的格式,而是 (x1,x2,...,xn)和(y1,y2,...,yn) 。
2. 例子
和MATLAB命令类似,你还可以通过一种更简单的方式绘制图像,matplotlib.pyplot
方法能够直接在当前axes上绘制图像,如果用户未指定axes,matplotlib会帮你自动创建一个。所以上面的例子也可以简化为以下这一行代码。
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
这里有个trick(坑)需要注意一下。如上所示,在IPython或jupyter notebook的同一个代码框中,如果不对其声明画在哪个图上(可以使用 plot()
函数里面的 ax
参数进行指定),就会自动画到最后一个创建的图上(即最后一个Figure对象的最后一个Axes子图里)。
plt.figure() # 创建一个新的Figure对象
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
更多例子可以在Matplotlib官网查看:
https://matplotlib.org/gallery/index.html
三、 Matplotlib 全貌
现在我们来深入看一下figure的组成。通过一张figure解剖图,我们可以看到一个完整的matplotlib图像通常会包括以下四个层级,这些层级也被称为容器(container),下一节会详细介绍。在matplotlib的世界中,我们将通过各种命令方法来操纵图像中的每一个部分,从而达到数据可视化的最终效果,一副完整的图像实际上是各类子元素的集合。
Figure:顶层级,用来容纳所有绘图元素。
Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成。
Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素。
Tick:axis的下属层级,用来处理所有和刻度有关的元素。
四、 Matplotlib 绘图接口
matplotlib提供了两种最常用的绘图接口
显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)。
依赖pyplot自动创建figure和axes,并绘图。
使用第一种绘图接口,是这样的:
x = np.linspace(0, 2, 100)fig, ax = plt.subplots()
ax.plot(x, x, label='linear')
ax.plot(x, x**2, label='quadratic')
ax.plot(x, x**3, label='cubic')
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()
而如果采用第二种绘图接口,绘制同样的图,代码是这样的:
plt.figure()
IPython 里面需要加这行,jupyter notebook则不用,原因见<2.2 例子2>。
x = np.linspace(0, 2, 100)plt.figure() # IPython里面需要加这行,jupyter notebook则不用
plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
五、 讨论
在工作或学习中通常何时会用到数据可视化,希望通过可视化达到什么目的?
个人经验:
① 在机器学习中,数据可视化经常用于各种算法模型拟合效果的直观展示。
例子1:线性回归模型的拟合效果。
例子2:机器学习聚类算法的K-MEANS算法和DBSCAN算法对数据集划分类别的效果对比。
下图来源:K-MEANS可视化网站https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
下图来源:DBSCAN算法可视化网站https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
② 在数据分析和数据挖掘中经常用来检查数据的分布,以及窥探数据集内在的规律或事件发展的规律。以下是个人在数据分析和数据挖掘中使用到数据可视化的2个案例。
例1:使用黄氏曲线评估零售店促销活动效果
例2:Kaggle项目:Predict Future Sales(商品未来销量预测)
参考连接:(数据可视化开源教程)
https://github.com/datawhalechina/fantastic-matplotlib
小白团队出品:零基础精通语义分割↓↓↓
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
Matplotlib数据可视化方法总结相关推荐
- python如何读取mat文件可视化_python Matplotlib数据可视化(1):简单入门
1 matplot入门指南 matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来说也意 ...
- chart.js 饼图显示百分比_Python怎么画饼图?Matplotlib数据可视化004:饼图
前文回看: [Python菜鸟进阶大神]Matplotlib数据可视化001:基础API汇总&散点图 [Python菜鸟进阶大神]Matplotlib数据可视化002:折线图 [Python菜 ...
- matplotlib 数据可视化
图的基本结构 通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制. 一幅数据图基本上包括如下结构: Data: 数据区,包括数据点.描绘形状 Axis: 坐标轴, ...
- Python数据科学学习笔记之——Matplotlib数据可视化
Matplotlib 数据可视化 1.Matplotlib 常用技巧 1.1.导入 Matplotlib import matplotlib as mpl import matplotlib.pypl ...
- Matplotlib数据可视化(5)
1 Matplotlib数据可视化 1.1 第一部分 课程介绍 pip install matplotlib -i Simple Index 在数据分析与机器学习中,我们经常要用到大量的可视化操作 ...
- Matplotlib 数据可视化(读书笔记)
Python 数据科学手册第四章读书笔记,仅供学习交流使用 4. Matplotlib 数据可视化 4.1 Matplotlib 常用技巧 4.1.1 导入 Matplotlib plt 是最常用的接 ...
- Python Matplotlib数据可视化绘图之(六)————图片大小、颜色、标题、纵横坐标、画布和绘图区域背景颜色、Legend(图例)等的参数设置详解
文章目录 前言 一.图片大小的设定和调节 1. 三种调整matplotlib图片大小的方法 1.1 plt.figure(figsize=(n, n)) 1.1.1 代码如下: 1.1.2 输出结果如 ...
- Matplotlib数据可视化实操--基础知识、使用PyLab模块和Pyplot模块基础绘图方式
文章目录 一.Matplotlib数据可视化是什么? 二.Matplotlib.pyplot接口汇总 1.绘图类型 2.Image函数 3.Axis函数 4.Figure函数 三.使用Pyplot模块 ...
- 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)
这是机器未来的第52篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226 <Python数据科学快速入 ...
最新文章
- 如何利用CIC滤波器、CIC补偿滤波器和半带滤波器设计一个高频数字抽取滤波器
- 两个页面的公共的文件怎么只引入一次_vuecli 多页面之公共入口
- JAVA学习笔记04
- 数论--中国剩余定理模板
- 华为鸿蒙11什么时候发布,原创 华为EMUI11正式发布,今年12月可升级为鸿蒙OS2.0国产操作系统...
- bag of word C++图像批量读写
- 《勤哲Excel服务器专业开发》
- android设备间实现无线投屏
- Excel 查找函数
- linux删除文件名的文件夹,Linux删除文件夹和修改文件名
- 高速PCB设计系列基础知识67 | 尺寸与公差标注内容与通用知识
- 高拍仪拍照SDK开发(良田影像S300L|S500L)
- 《人生只有一次,去做自己喜欢的事》读书笔记
- 基于VB的Picture绘图
- Precision、Recall、F1-score、Micro-F1、Macro-F1、Recall@K
- OpenCV+ip摄像头实现远程实时监控
- linux hosts的allow和deny
- 2022前端面试(一面面试题)
- android图标未读消息,Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示...
- javaEE练习(商城练习)
热门文章
- 这个低代码平台让企业管理效率翻倍!
- 什么是 .manifest 文件
- manifest 文件作用
- cloudflare免费证书_Cloudflare免费CDN加速和免费SSL证书服务
- android 点击返回顶部,Android scrollToTop实现点击回到顶部(兼容PullTorefreshScrollview)...
- Android Vsync原理简析
- 市场收益率预期与远期收益率
- 收益率曲线形态的动力学:实证证据、经济学解释和理论基础
- sddlm oracle rac,关于oracle的RAC
- 【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构