学习打卡1-Matplotlib初相识

一、认识matplotlib

matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。

matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中。这套函数接口方便MATLAB用户过度到matplotlib包

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

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

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

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

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

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
"""
%matplotlib inlie可以在Ipython编译器比如jupyter notebook或者jupyter qtconsole里直接使用,功能是可以内嵌绘图,并且省略掉plt.show()
但是在spyter或pycharm实际运行代码的时候,可以直接注释掉这一句.
"""
fig ,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:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一个figure可以由一个或多个子图组成

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

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


四、两种绘图接口
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() #作用:在图上标明一个图例,用于说明每条曲线的文字显示


五、通用绘图模板
使用OO模式的绘图模板如下:

# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 定义布局
fig, ax = plt.subplots()
# step4 绘制图像
ax.plot(x, y, label='linear')
# step5 添加标签
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_title("Simple Plot")
ax.legend()

思考题

1.请思考两种绘图模式的优缺点和各自适合的使用场景
OO模式个人看起来简洁明朗、便于大型分块数据分析,缺点是对小型数据可视化效率较低。pyplot绘图模式更适合快速交互式场景。对于分块分区域可视化不太好。
2.在第五节绘图模板中我们是以OO模式作为例子展示的,请思考并写一个pyplot绘图模式的简单模板

# step1 准备数据
x = np.linspace(0, 2, 100)
y = x**2
# step2 设置绘图样式
mpl.rc('lines', linewidth=4, linestyle='-.')
# step3 绘制图像
plt.plot(x, y, label='linear')
# step4 添加标签
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()

学习打卡1-Matplotlib初相识相关推荐

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

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

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

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

  3. Matplotlib初相识

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

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

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

  5. 第一回:Matplotlib初相识

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

  6. 第37期Datawhale组队学习——数据可视化(Matplotlib)

    目录 前言 学习路线 Task01:Matplotlib初相识(5.16.5.17) Task02:艺术画笔见乾坤(5.18-5.22) Task03:布局格式定方圆(5.23.5.24) Task0 ...

  7. matplotlib可视化初相识

    目录 第一回:Matplotlib初相识 一.认识matplotlib 二.一个最简单的绘图例子 三.Figure的组成 四.两种绘图接口 五.通用绘图模板 第一回:Matplotlib初相识 一.认 ...

  8. 坚持学习打卡的人,将来会变成什么样?

    坚持打卡的人,将来会变成怎么样?让我们拭目以待.我组织了一个打卡活动,希望大家踊跃参加. 有一个励志故事: 在中国的最东边生长着一种竹子,名叫"毛竹".那里的农民到处播种,每天精心 ...

  9. mysqldump单个库导出_初相识 | 全方位认识 sys 系统库

    前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库.在我们的发布计划中为什么要把performance ...

最新文章

  1. 存储过程的优缺点 (转载)
  2. 数据结构 — B+ 树
  3. System BIOS设置
  4. Node学习记录: 图片爬虫
  5. ArcgisPro3.0.1中文安装包下载及安装教程
  6. Mac 卸载Symantec软件
  7. PPT——背景图格式(排版)和字体排版
  8. java ico图片转png_Java图片处理:ico格式转 PNG/JPG等格式
  9. git的push rejected报错
  10. AD绘制PCB经验总结3-规则报警 Silk primitive without silk layer+Minimum Solder Mask Sliver
  11. VC中CTime和SYSTEMTIME转化
  12. myeclipse如何导入外部jar包
  13. trove mysql 镜像_centos7下手动制作trove镜像
  14. ExifTool如何格式化日期和时间信息以进行书写
  15. 知识蒸馏——pytorch实现
  16. 华为和H3C--VRP基础和基本的操作
  17. Q1营收超预期且亏损大幅收窄 Lyft何以驶出疫外之道?
  18. 三、SALV 添加自定义的状态栏
  19. mybatis-generator-gui 一款 mybatis generator 的图形界面工具
  20. [hive]lateral view炸开两层

热门文章

  1. Unity3D客户端在游戏场景中创建阻挡并用二进制导出
  2. 一揽子采购协议ORACLE功能
  3. 世界著名的膳食结构模式共有三种
  4. Hypermedia模型是什么
  5. 2023年大年初一 —— 牛客网刷题经验分享~
  6. 初中计算机学业水平考试知识点,初中信息技术学业水平考试知识点
  7. 2019史上最全java面试题题库大全800题含答案
  8. 测控技术与仪器需要学计算机吗,测控技术与仪器专业对计算机有什么要求吗??我是..._高考志愿_帮考网...
  9. 用友t3 xp系统服务器,用友T3-财务通windows xp系统下安装sql2005
  10. Vista系统安全设置