(二)Matplotlib 基础知识

专栏: Matplotlib

上一篇:(一)Matplotlib介绍及相关文档

下一篇:

一、模块的导入

(一)Matplotlib 的导入

  Matplotlib 库使用多是导入以下两个模块:

import matplotlib as mpl
import matplotlib.pyplot as plt

(二)NumPy的导入

NumPy 是使用 Python 进行科学计算的基础软件包。除其他外,它包括:

  • 功能强大的 (二)Matplotlib 基础知识 维数组对象。
  • 精密广播功能函数。
  • 集成 C/C++Fortran 代码的工具。
  • 强大的线性代数、傅立叶变换和随机数功能。

  Matplotlib 所使用的数据,通常由 NumPy 来提供。Python 本身的列表 list 和 数学库math 配合得并不是很好。math 库所作用的是单个值,而数据的生成大多是对整个数组进行操作。

import numpy as np

二、绘图类型

Matplotlib Plot Type

  Matplotlib 中许多常见绘图命令的概述。
请添加图片描述

三、Matplotlib Figure的组成

  下图给出了 Matplotlib 中只包含一个 AxesFigure(图) 的组成结构,同时,一张图可以由多个子图组成。

(一)图形元素

  Matplotlib 中所有可见的一切都被称作 Artist。当一张 图(Figure) 被绘制时,所有的 Artist 都会被绘制到一张 画布(Canvas) 上。大多数的 Artist 都会被绑定到一个 Axes 中,所以不能同时被多个 Axes 共享或者从一个 Axes 移动到 Axes

1. Figure

  FigureMatplotlib 中表示一整张图,上面包含了所有的 Axes,以及一组特殊的 Artist ,如标题,图例,颜色条等,甚至是嵌套的子图(subfigure)。

2. Axes

  Axes 是一个附加到 FigureArtist,其中了包含用于绘制数据的区域。Axes除了包含一个绘图区域外,通常还包含两条坐标轴:(二)Matplotlib 基础知识轴 和 (二)Matplotlib 基础知识轴,绘制3D图形则多一个(二)Matplotlib 基础知识轴。并且每个 Axes 都会有一个 Title(标题) 和两个坐标轴标签: x-labely-label
  下图为一个 Axes 的组成:
请添加图片描述

  在下图所示的 Figure 中,包含了4个Axes,每个 Axes都有各自的标题,左下边缘有用于显示刻度的坐标轴。(每个Axes旁边还有绑定的 ColorBar 颜色条)

3. Axis

  坐标轴 Axis 用于设置缩放比例、限值、生成刻度(坐标轴上的标记) 和 刻度标签(标记刻度的一串文本)。这些刻度的位置由 Locator 决定,标签文本则由一个Formatter 格式化。
  在下图中可以看到 Axes左边 Y-Axis 和底边 X-Axis 上的刻度线和刻度上的标签文本。
请添加图片描述

四、编程风格

  Matplotlib 有三种代码风格,分别是 Object-oriented(面向对象)pyplot 接口pylab 接口
  其中, pylab接口 风格是模拟 MATLAB 的使用方式,导入了大量名称到全局命名空间中,对命名空间造成了污染,现在已经被认为是一种有害的方式而被官方强烈反对,现在基本只存在于旧代码示例中。目前推荐使用的只有 面向对象风格pyplot 接口 风格。
  Matplotlib 的文档和示例同时使用了 Object-oriented 和 pyplot 风格。 通常,我们建议使用 Object-oriented 风格,特别是对于绘图复杂的情况,以及打算作为更大项目的一部分重用的函数和脚本。 但是,pyplot风格对于快速交互工作非常方便。

  下面就对同一个简单的绘图使用 Object-oriented 和 pyplot 两个不同的编程风格来绘制。

面向对象风格

  面向对象风格即显式地创建 FiguresAxes ,并调用它们的方法。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2, 100)  # Sample data.

# Note that even in the OO-style, we use `.pyplot.figure` to create the Figure.
fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')

ax.plot(x, x, label='linear')           # Plot some data on the axes.
ax.plot(x, x**2, label='quadratic')     # Plot more data on the axes...
ax.plot(x, x**3, label='cubic')         # ... and some more.
ax.set_xlabel('x label')                # Add an x-label to the axes.
ax.set_ylabel('y label')                # Add a y-label to the axes.
ax.set_title("Simple Plot")             # Add a title to the axes.
ax.legend()                             # Add a legend.


plt.show()								# Show the figure.

pyplot 接口风格
  pyplot 风格使用 pyplot的接口来进行绘图。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2, 100)  # Sample data.

plt.figure(figsize=(5, 2.7), layout='constrained')
plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.plot(x, x**2, label='quadratic')  # etc.
plt.plot(x, x**3, label='cubic')
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()

plt.show()

专栏: Matplotlib

上一篇:(一)Matplotlib介绍及相关文档

下一篇:

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年5月17日
下一篇 2022年5月17日

相关推荐