百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python Matplotlib 绘图使用指南(附代码)

off999 2024-09-23 11:35 14 浏览 0 评论

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

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

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

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

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

https://realpython.com/python-matplotlib-guide/#why-can-matplotlib-be-confusing

https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Python_Matplotlib_Cheat_Sheet.pdf

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 图像剖析

来自: https://matplotlib.org/faq/usage_faq.html

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.结束

博客原址: https://www.kaggle.com/grroverpr/matplotlib-plotting-guide/notebook

雷锋网雷锋网

相关推荐

Python 数据分析——利用Pandas进行分组统计

话说天下大势,分久必合,合久必分。数据分析也是如此,我们经常要对数据进行分组与聚合,以对不同组的数据进行深入解读。本章将介绍如何利用Pandas中的GroupBy操作函数来完成数据的分组、聚合以及统计...

python数据分析:介绍pandas库的数据类型Series和DataFrame

安装pandaspipinstallpandas-ihttps://mirrors.aliyun.com/pypi/simple/使用pandas直接导入即可importpandasas...

使用DataFrame计算两列的总和和最大值_[python]

【如果对您有用,请关注并转发,谢谢~~】最近在处理气象类相关数据的空间计算,在做综合性计算的时候,DataFrame针对每列的统计求和、最大值等较为方便,对某行的两列或多列数据进行求和与最大值等的简便...

8-Python内置函数

Python提供了丰富的内置函数,这些函数可以直接使用而无需导入任何模块。以下是一些常用的内置函数及其示例:1-print()1-1-说明输出指定的信息到控制台。1-2-例子2-len()2-1-说...

Python中函数式编程函数: reduce()函数

Python中的reduce()函数是一个强大的工具,它通过连续地将指定的函数应用于序列(如列表)来对序列(如列表)执行累积操作。它是functools模块的一部分,这意味着您需要在使用它之...

万万没想到,除了香农计划,Python3.11竟还有这么多性能提升

众所周知,Python3.11版本带来了较大的性能提升,但是,它具体在哪些方面上得到了优化呢?除了著名的“香农计划”外,它还包含哪些与性能相关的优化呢?本文将带你一探究竟!作者:BeshrKay...

最全python3.11版12类75个内置函数大全

获取全部内置函数:importbuiltins#导入模块yc=[]#异常属性nc=[]#不可调用fn=[]#内置函数defll(ty=builtins):...

软件测试笔试题

测试工程师岗位,3-5年,10-14k1.我司有一款产品,类似TeamViewer,向日葵,mstsc,QQ远程控制产品,一个PC客户端产品,请设想一下测试要点。并写出2.写出常用的SQL语句8条,l...

备战各大互联网巨头公司招聘会,最全Python面试大全,共300题

前言众所周知,越是顶尖的互联网公司在面试这一part的要求就越高,需要你有很好的技术功底、项目经验、一份漂亮的简历,当然还有避免不了的笔试过关。对于Python的工程师来说,全面掌握好有关Python...

经典 SQL 数据库笔试题及答案整理

马上又是金三银四啦,有蛮多小伙伴在跳槽找工作,但对于年限稍短的软件测试工程师,难免会需要进行笔试,而在笔试中,基本都会碰到一道关于数据库的大题,今天这篇文章呢,就收录了下最近学员反馈上来的一些数据库笔...

用Python开发日常小软件,让生活与工作更高效!附实例代码

引言:Python如何让生活更轻松?在数字化时代,编程早已不是程序员的专属技能。Python凭借其简洁易学的特点,成为普通人提升效率、解决日常问题的得力工具。无论是自动化重复任务、处理数据,还是开发个...

太牛了!102个Python实战项目被我扒到了!建议收藏!

挖到宝了!整整102个Python实战项目合集,从基础语法到高阶应用全覆盖,附完整源码+数据集,手把手带你从代码小白变身实战大神!这波羊毛不薅真的亏到哭!超全项目库,学练一站式搞定这份资...

Python中的并发编程

1.Python对并发编程的支持多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成。多进程:multiprocessing,利用多核CPU...

Python 也有内存泄漏?

1.背景前段时间接手了一个边缘视觉识别的项目,大功能已经开发的差不多了,主要是需要是优化一些性能问题。其中比较突出的内存泄漏的问题,而且不止一处,有些比较有代表性,可以总结一下。为了更好地可视化内存...

python爬虫之多线程threading、多进程、协程aiohttp批量下载图片

一、单线程常规下载常规单线程执行脚本爬取壁纸图片,只爬取一页的图片。importdatetimeimportreimportrequestsfrombs4importBeautifu...

取消回复欢迎 发表评论: