雷锋网(公众号:雷锋网)按:本文为雷锋字幕组编译的技术博客,原标题 Matplotlib Plotting Guide, 作者为 Prince Grover。

翻译 | 李振 于志鹏 整理 | 凡江

大多数人不会花大量时间去学matplotlib库,仍然可以实现绘图需求,因为已经有人在 stackoverflow、github 等开源平台上提供了绝大多数画图问题的解决方案。我们通常会使用 google 来完成绘图需求。至少我是这样。

那学 matplotlib 库有什么用?答案是:可以节约搜索时间。掌握 matplotlib 的速查表并了解其基本接口,根据个性需求从众多资源中编辑我们的绘图,从长期来看会节约很多的时间。

大部分内容取自以下 2 个链接,建议也去阅读一下。

matplotlib 是一个基于 Python 的 2D 绘图库,其可以在跨平台的在各种硬拷贝格式和交互式环境中绘制出高图形。一个有趣的现象。为什么引用库总采用 import matplotlib.pyplot as plt 的方式呢?

因为使用例如 pylab import * 或者 %pylab 是一个非常不好的方式,matplotlib 官方不建议这样使用,具体原因如下:

由于历史原因,from pylab import *仍然存在,但是强烈建议不要这样使用。这样做会遮蔽 Python 的内置函数进而占用命名空间,导致难以追踪的 bugs。想要实现零输入获得 IPython 集成,推荐使用 %matplotlib 命令。来源:https://matplotlib.org/users/shell.html#using-matplotlib-in-a-python-shell使用 matplotlib 绘制不同类型的图像是很容易的,有很多文档和教程。最重要的是,了解最佳的绘图方式。如何使用 axes,subplots 等。这篇文章主要针对这些问题。

1.内联绘图和 % matplotlib

%matplotlib命令可以在当前的 Notebook 中启用绘图。这个命令提供一个可选参数,指定使用哪个 matplotlib 后端。绝大多数情况下,Notebook 中都是使用inline后台,它可以在 Notebook 中嵌入绘图。另一个选项是qt后台,它在侧窗口打中打开 Matplotlib 交互 UI 。

Matlibplot 提供了多种绘图 UI ,可进行如下分类 :弹出窗口和交互界面: %matplotlib qt 和 %matplot tk

非交互式内联绘图: %matplotlib inline

交互式内联绘图: %matplotlib notebook-->别用这个,它会让开关变得困难。

2.理解 matplotlib 对象结构

pyplot 是一个 matplotlib 面向对象的函数接口。

plt.gca()

它返回当前 plot() 关联的轴

如果不使用plt.close(),则会显示出空的图形。因为在开始时使用了inline命令。

axis_id仍然是相同的,但是当我们移动到另一个 Notebook 块时,plt.gca()会发生变化。

Setter 和 Getter

Getter 和 Setter 方法用于捕获当前或任意 axies 以及对其进行修改。我们可能需要修改标题、颜色、图列、字体等。有两种方法:

1. 使用 fig.axes[i] 指定要抓取的 axes,使用 setter 的 getter 对 axies 对象进行调用。在上面的例子中,只有一个 axes,所以我们调用 axes[0]。

2. 我们可以直接使用 plt.bla()调用当前 axis(其中,bla 可以是 title(),legend(),xlabel()等)。这是 matlibplot 面向对象的一种函数。这个函数让修改当前的 axes 变得容易。比 1 的方法更常用。

当我们使用axes[i]时,我们可以调用任何之前的代码块中的任何 axes 对象,但是调用 plt.bla(),会在每个代码块中创建新的 axes 对象,并只调用当前对象。因此,上面例子中,只在plt.title()被调用时,才创建新plt对象。

重要观察:我们通常在当前 axis 对象上调用 plt.bla(),这种语法使得每个代码块中的 axis 对象都是新创建的。但是通过调用fig.axes[0],我们也可以从任何代码块中处理之前的 axes 对象。

这是 stateless(object oriented)方法,并可以自定义,当图像变得复杂时,这样做很方便。

所以,我建议是使用fig,ax = plt.subplots(_)先解压 axes 和 figure,并给它们分配给一个新的变量。然后,可以对这些变量使用 Getter 和 Setter 方法进行绘图中的更改。此外,这使得我们能够在多个 axes 上做工作,而不是只在一个当前 axes 上。pyplot使用 1 次创建子图,然后使用 OO 方法。

结论:从现在开始,我使用 plt.subpots() 来完成不同的绘图。(如果有人认为这个观点是错误的,请纠正我)

3.matplotlib 图像剖析

4.绘图的基本例子

如何作图的基本例子,涵盖面向对象绘图的各个方面。请仔细阅读。

总结上面的例子:我们创建 1 行和 2 列的图形。即,1 行和 2 列中的 2 个 axes 对象。

我们分别自定义 ax1 和 ax2。可以看到,我们可以将 Y-ticks 移动到右边的第二图形中。

5.二维网格的绘制

subplot2grid

需要做什么?

观察下面的绘图格式。

思路是把上面的图形考虑成为2x4 网格。然后将多个网格分配给单个图以容纳所需的图形。

重点:我们可以使用 subplot2grid 定制我们的绘图布局。

我们可以用 plt.figure() 创建无 axes 对象的图形,然后手动添加 axes 对象。

我们可以使用 fig.suptitle() 来设置整个图形的总标题。

6.颜色,颜色条,RGB 数组和颜色图谱

我们已经介绍了 ax.plot(),ax.scatter(),ax.bar() 和 ax.hist() 等基本图形操作,另一个更常用的函数是 ax.imshow(),它用来显示彩色图或图像/RGB 数组。

7.线条样式和线条宽度

改变线条宽度、颜色或风格。

8.基本的数据分布

EDA 过程中的必要操作。

9.二维数组的等高线图和颜色网格图

热像图(颜色网格图)和等高线图在很多情况下都有助于可视化 2D 数据。

10.图像的调整、修改边缘坐标和标度

最后调整细节,让绘图变得更好看。

11.标度的限制和自动调整

需要注意的事情:填充(padding)自动设置 X 轴或 Y 轴网格标度

我们可以使用 xlim,ylim设置 x,y 的刻度限制

12.技巧

13.轴线

14.结束

雷锋网雷锋网

雷锋网原创文章,未经授权禁止转载。详情见转载须知。

python画图代码大全-Python Matplotlib 绘图使用指南 (附代码)相关推荐

  1. python画图三维标记_Python matplotlib绘图示例 - 绘制三维图形

    Python matplotlib模块是扩展的MATLAB的一个绘图工具库.它可以绘制各种图形,下面就学习了下Python中的matplotlib模块,如何绘制三维图形. 示例代码一: # codin ...

  2. 为什么用python画图_为什么使用Matplotlib绘图太慢?

    首先,(尽管这根本不会改变性能)考虑清理你的代码,类似这样:import matplotlib.pyplot as plt import numpy as np import time x = np. ...

  3. python画图代码大全-Python科学画图代码分享

    Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 这里有一本电子书供大家参 ...

  4. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  5. python基础代码大全-python基础代码大全

    [实例简介] python代码大全,适用于基础python学习者,里面的代码基本上是基础学习者必经过程. Python学习入门很快,但学习之路任重道远 [实例截图] [核心代码] python代码大全 ...

  6. 2021年python画图方法大全

    Python画图主要用到matplotlib这个库.Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 这里有一本电子书供大家参 ...

  7. boxplot用法 python,[Python画图笔记]利用Python画箱型图boxplot

    [Python画图笔记]利用Python画箱型图boxplot [Python画图笔记]利用Python画箱型图boxplot 最近在学习使用Python画图,想用subplot画两幅箱型图,分别用来 ...

  8. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  9. Python爬虫:Xpath爬取网页信息(附代码)

    Python爬虫:Xpath爬取网页信息(附代码) 上一次分享了使用Python简单爬取网页信息的方法.但是仅仅对于单一网页的信息爬取一般无法满足我们的数据需求.对于一般的数据需求,我们通常需要从一个 ...

  10. python常用代码大全-Python常用库大全及简要说明

    环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python 版本管理工具.官网 Vex:可以在虚拟环境中执行命令.官网 v ...

最新文章

  1. 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
  2. Nginx+Tomcat+memcached负载均衡实现seccion存储
  3. 【Java】深入理解Java虚拟机的读书笔记
  4. 手把手gitlab最详细版安装教程centos7下安装(最新版),修复gitlab
  5. 1.6_quick_sort_快速排序
  6. 信息源按加工深度划分_工程勘察时如何划分地层?勘查总工实力整理
  7. 联通积分兑换的Q币怎么兑换到QQ上
  8. electron-mac应用-代码签名及公证(教科书式操作-亲测有效)
  9. 上传图片显示服务器返回错误什么意思,上传图片出错时的解决步骤
  10. [历朝通俗演义-蔡东藩-前汉]第007回 寻生路徐市垦荒 从逆谋李斯矫诏
  11. python 实例解析--村长选举
  12. Linux中阶—加密库OpenSSL(四)
  13. 东芝L630-08R装机拆机流程
  14. STM32串口自动识别波特率
  15. Java中扫雷游戏的递归算法_扫雷之递归
  16. H5企业网站模板:蓝绿过渡色功能菜单齐全企业网站模板
  17. MXBean already registered报错解决
  18. Motif-based Graph Self-Supervised Learning for Molecular Property Prediction
  19. goproxy gitlab 搭建go 私有仓库
  20. 移动pc客户端迷你版泄露

热门文章

  1. DeepStream输出插件Gst-nvmsgconv和Gst-nvmsgbroker
  2. LeetCode(一):两数之和
  3. OpenCV学习——绘制图像灰色直方图
  4. DBGrid 应用全书
  5. 数据挖掘:特征提取——PCA与LDA
  6. 1.1.27 word表格里的文字不显示
  7. Vue v-on v-model 组合使用
  8. java实现文件的移动
  9. hiho一下第91周《Events Arrangement》(前半部分)
  10. ob_start()函数