前言

期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈

这次我主要目的是最近要写篇论文,也正好为以后建模画图打捞基础~

大家可以多看看官方教程:

  • 中文官方网站:https://www.matplotlib.org.cn/
  • 中文官方网站:https://matplotlib.org/

当然还有datawhale,一起讨论!

  • http://datawhale.club/

系列:

  1. 数据可视化系列(一):Matplotlib初相识

一、认识matplotlib

Matplotlib是一个Python 2D绘图库,能够以多种硬拷贝格式和跨平台的交互式环境生成出版物质量的图形,用来绘制各种静态,动态,交互式的图表。

Matplotlib可用于Python脚本,Python和IPython Shell、Jupyter notebook,Web应用程序服务器和各种图形用户界面工具包等。

Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的高级封装。

为了对matplotlib有更好的理解,让我们从一些最基本的概念开始认识它,再逐渐过渡到一些高级技巧中。

二、一个最简单的绘图例子

Matplotlib的图像是画在figure(如windows,jupyter窗体)上的,每一个figure又包含了一个或多个axes(一个可以指定坐标系的子区域)。最简单的创建figure以及axes的方式是通过pyplot.subplots命令,创建axes以后,可以使用Axes.plot绘制最简易的折线图。(关于figure、axes、axis等等概念后面会详细谈到)

import matplotlib.pyplot as plt
import numpy as npfig, ax = plt.subplots()  # 创建一个包含一个axes的figure
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])  # 绘制图像


和MATLAB命令类似,你还可以通过一种更简单的方式绘制图像,matplotlib.pyplot方法能够直接在当前axes上绘制图像,如果用户未指定axes,matplotlib会帮你自动创建一个。所以上面的例子也可以简化为以下这一行代码。

plt.plot([1, 2, 3, 4], [1, 4, 2, 3])

三、Figure的组成

现在我们来深入看一下figure的组成。通过一张figure解剖图,我们可以看到一个完整的matplotlib图像通常会包括以下四个层级,这些层级也被称为容器(container),下一节会详细介绍。在matplotlib的世界中,我们将通过各种命令方法来操纵图像中的每一个部分,从而达到数据可视化的最终效果,一副完整的图像实际上是各类子元素的集合,就可以通过figure -> axes --> axis的流程完成图表在宏观层面的创建。

  • Figure:顶层级,用来容纳所有绘图元素

  • Axes:可以认为是figure这张画图上的子图,因为子图上一般都是坐标图,也可以愿意理解为轴域或者坐标系

  • Axis:axes的下属层级,用于处理所有和坐标轴,网格有关的元素

  • Tick:axis的下属层级,用来处理所有和刻度有关的元素


-spines:调整轴Spine的位置和外观(官方示例)

-grid:添加网格

-markers:标记参考(示例)

上面说的过于抽象,接下来降维讲解一下:

此处参考自:python matplotlib中axes与axis的区别?

用画板和画纸来做比喻的话,figure就好像是画板,是画纸的载体,但是具体画画等操作是在画纸上完成的。在pyplot中,画纸的概念对应的就是Axes/Subplot。

用电脑桌面来比喻的话就是:把fig想象成windows的桌面,你可以有好几个桌面。然后axes就是桌面上的图标,subplot也是图标。

  • Axes 和 Subplot 的概念上细微的区别
    他们的区别在:axes是自由摆放的图标,甚至可以相互重叠,而subplot是“自动对齐到网格”。
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
print(type(ax1))
plt.show()

第一个例子是用subplot()方法。

subplot()方法很好理解。里面传入的三个数字,前两个数字代表要生成几行几列的子图矩阵,底单个数字代表选中的子图位置。这个例子中我们生成了2行1列的子图矩阵。可以分别在两个subplot中画图。

fig = plt.figure()
ax3 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax4 = fig.add_axes([0.72, 0.72, 0.16, 0.16])
print(type(ax3))
plt.show()


第二个例子是用add_axes()方法。

我觉得轴域(Axes)的感念确实可以先理解成一些轴(Axis)的集合,当然这个集合还有很多轴(Axis)的属性,标注等等。我们用add_axes()方法生成一个轴域(Axes),括号里面的值前两个是轴域原点坐标(从左下角计算的),后两个是显示坐标轴的长度。当我们生成了轴域的时候,从结果上看确实是生成了一个可以画图的子图。我们可以分别在两个轴域(Axes)中画图。

对比两种方法,两种对象,我们可以总结总结:

  • 两种对象确实是“你中有我,我中有你”的关系,生成子图(subplot)的时候,必然带着所谓的一套轴域(Axes)。而用轴域(Axes)方法,客观上就是生成了一个可以画图的子图。
  • add_subplot()方法在生成子图过程,简单明了,而用add_axes()方法,则生成子图的灵活性更强,完全可以实现add_subplot()方法的功能,可以控制子图显示位置,甚至实现相互重叠的效果。例如:

四、两种绘图接口

matplotlib提供了两种最常用的绘图接口

  1. 显式创建figure和axes,在上面调用绘图方法,也被称为OO模式(object-oriented style)

  2. 依赖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()


而如果采用第二种绘图接口,绘制同样的图,代码是这样的:

x = np.linspace(0, 2, 100)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()

补:legend方法:
matplotlib命令与格式:图例legend语法及设置

数据可视化系列(一):Matplotlib初相识相关推荐

  1. 数据可视化Day1:Matplotlib初相识

    1. 什么是Matplotlib? python2D绘图库 可绘制静态,动态,交互图表 2. 一个最简单的绘图例子 pyplot.subplots--创建figure和axes Axes.plot-- ...

  2. 数据可视化组队学习:《Task01 - Matplotlib初相识》笔记

    第一回:Matplotlib初相识 本文为组队学习任务01学习笔记. Matplotlib简要总结 Matplotlib的结构 一个完整的Matplotlib图像包括四个层级: Figure:容纳所有 ...

  3. Python数据可视化 | Python实现Matplotlib系列colorbar的设置

    Python数据可视化 | Python实现Matplotlib系列colorbar的设置 目录 Python数据可视化 | Python实现Matplotlib系列colorbar的设置 color ...

  4. 数据可视化系列(三):布局格式定方圆

    前言 期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈 这次我主要目的是最近要写篇论文,也正好为以后建模画图打劳基础~ 大家可以多看看官方教程: 中文官方网站:http ...

  5. 数据可视化系列(二):艺术画笔见乾坤

    前言 期待了好久的datawhale可视化教程终于出来了,这次标题狠有文艺范儿,哈哈哈 这次我主要目的是最近要写篇论文,也正好为以后建模画图打劳基础~ 大家可以多看看官方教程: 中文官方网站:http ...

  6. 数据可视化系列-06数据分析工具QuickBI

    文章目录 数据可视化系列-06数据分析工具QuickBI 一文介绍QuickBI Quick BI 的基本对象 快速入门 Quick BI产品架构界面说明 菜单栏 我的看板 工作台首页 通过仪表板分析 ...

  7. 数据可视化系列-05数据分析报告

    文章目录 数据可视化系列-05数据分析报告 1.了解初识数据分析报告 数据分析报告简介 数据分析报告的作用 报告的能力体现 报告编写的原则 报告种类 2.掌握数据分析报告结构 标题页 目录 前言 正文 ...

  8. 数据可视化系列-01大数据可视化基础

    文章目录 1.概述 2.大数据可视化基础 2.1 数据可视化基础知识 1.数据可视化简史: 2.数据可视化是什么: 3.数据可视化的分类: 4.数据可视化流程: 5.数据可视化的意义: 2.2 认识B ...

  9. 数字冰雹 可视化html,数字冰雹数据可视化系列产品(二):网络态势可视化

    数字冰雹数据可视化系列产品(二):网络态势可视化 时间:2015-08-12 17:28:36 作者:数字冰雹 数字冰雹为您将抽象的网络和系统数据进行可视化呈现,帮助用户快速地分析网络状况,识别网络异 ...

最新文章

  1. 什么是ATM(异步传输模式)?—Vecloud微云
  2. Java-Java I/O流解读之基于字节的I / O和字节流
  3. vnc连接linux时出现黑屏
  4. 自己抽取的柱状图MpAndroidChart
  5. 前端学习(758):预解析二
  6. C++学习之路 | PTA乙级—— 1059 C语言竞赛 (20 分)(精简)
  7. java solr5.2_solr5.2.1-----环境搭建
  8. php 数组按个数分组,如何在PHP中基于内部数组键对数组进行分组?
  9. 2018.3.13 浮动 定位
  10. 类的变量初始化是直接使用初始化器还是放在构造函数中?
  11. C#之http transfer-Encoding模式
  12. 周志华机器学习西瓜书速记第一章绪论
  13. android热加载随记
  14. NumPy库---文件操作
  15. 好的网站链接或文章链接(一)
  16. 基于web的网页问卷调查设计_Python3菜鸟教程丨基于Web模块的轻量级接口设计基础...
  17. 上海是怎么错失这些年的互联网机遇的?——写的很好,转
  18. python设计迷宫_用Python制作迷宫GIF
  19. Java 并发面试题解
  20. 足球视频AI(五)——球员与球的对象跟踪

热门文章

  1. 表关联使用INNER JOIN实现更新功能
  2. Matlab适配器模式
  3. 国内外公共CDN静态资源网站大全
  4. 【JavaScript】用Switch实现成绩等级判断
  5. 【编程】不同编程语言的用处(图解)
  6. oracle怎么判断地址相似,如何查看oracle数据文件的地址
  7. simulink 得到任意想要的 PWM 波形
  8. Java-时间复杂度和空间复杂度
  9. Python并发编程理论篇
  10. 编写Python高质量代码,资深程序员的 91 个建议