1 matplotlib安装_介绍_快速入门

1 安装

Matplotlib 在 PyPI 上以 wheel 包的形式发布,适用于 macOS、Windows 和 Linux。

使用 pip 进行安装:

python -m pip install -U pip
python -m pip install -U matplotlib

或者使用conda进行安装:

conda install matplotlib

安装后,输入以下代码,查看版本:

import matplotlib as mpl
mpl.__version__

输出

'3.8.2'

表明matplotlib被正确安装;

本文中所有代码均在matplotlib的’3.8.2’版本中测试通过;

2 matplotlib配置中文

plt.rcParams 是 Matplotlib 中的一个配置对象,用于设置全局的图表参数。通过这个对象,你可以修改 Matplotlib 的默认配置,从而影响整个图表的外观和行为。这样可以方便地自定义图表的样式,使其符合特定的需求。

plt.rcParams 实际上是一个字典,其中包含了许多可以配置的选项,比如图表字体、图表大小、字体大小、线型、颜色等。

在默认情况下matplotlib使用字体不包含中文:

plt.rcParams['font.sans-serif']
# 输出
['DejaVu Sans',
 'Bitstream Vera Sans',
 'Computer Modern Sans Serif',
 'Lucida Grande',
 'Verdana',
 'Geneva',
 'Lucid',
 'Arial',
 'Helvetica',
 'Avant Garde',
 'sans-serif']

在默认配置下,绘制图表,如果使用中文字符,会出现中文显示异常:

# 绘制sin函数
import numpy as np
from matplotlib import pyplot as plt

x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('正弦函数')
plt.plot(x, y)
plt.show()

pidr9KK.png

因此我我们需要修改 plt.rcParams的字体参数,使绘图可以正常显示中文:

plt.rcParams['font.sans-serif'] = ['SimHei'] # 配置中文, 可以换成其余已安装中文字体,通常设置为黑体
plt.rcParams['axes.unicode_minus'] = False  # 配置负号的显示,避免显示错误

配置完成后,使用matplotlib绘图即可正常显示中文:

# 绘制sin函数
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

x = np.arange(0, 3 * np.pi, 0.1)
y = np.sin(x)
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('正弦函数')
plt.plot(x, y)
plt.show()

pidrPbD.png

3 matplotlib的两种api

Matplotlib提供了两种主要的API(应用程序编程接口):Stateful API(状态式API)和Object-Oriented API(面向对象API)。它们在使用上有一些区别,适用于不同的使用场景和个人偏好。

3.1 Stateful API(状态式API):

1. 也被称为MATLAB-style API,因为它的设计受到MATLAB绘图的启发。
2. 使用全局状态机,图表的状态(例如当前图表、当前坐标轴)被保存在全局变量中。
3. 使用`plt`模块进行绘图,例如 `plt.plot()`。
4. 适合快速绘图和简单的图形。

示例:

import matplotlib.pyplot as plt  
x = [1, 2, 3, 4, 5] 
y = [2, 4, 6, 8, 10]  
plt.plot(x, y) 
plt.title('Stateful API 示例') 
plt.xlabel('X轴') 
plt.ylabel('Y轴') 
plt.show() 

3.2 Object-Oriented API(面向对象API):

1. 基于面向对象的设计,使用显式创建和操作图表对象的方式。
2. 通过创建`Figure`和 `Axes`对象,所有的绘图操作都发生在这些对象上。
3. 更灵活和可控,适用于复杂的图表和需要更多自定义的场景。

示例:

import matplotlib.pyplot as plt
 x = [1, 2, 3, 4, 5]
 y = [2, 4, 6, 8, 10]
 fig, ax = plt.subplots() 
 ax.plot(x, y) 
 ax.set_title('Object-Oriented API 示例') 
 ax.set_xlabel('X轴') 
 ax.set_ylabel('Y轴') 
 plt.show() 

选择哪个API:

  • 如果你只是需要快速的、简单的图形,Stateful API可能更直观和方便。
  • 对于更复杂、定制化的图形,以及需要在一个图表中显示多个子图的情况,Object-Oriented API更为强大和灵活。
    一般来说,Object-Oriented API在大型项目和复杂图形的创建中更受欢迎,因为它提供了更多的控制和结构。

4 matplotlib快速入门

Matplotlib 将数据绘制在 “画布”(Figure)上,每个 "画布"可以包含一个或多个 “坐标轴”(Axes),即可以用 x-y 坐标(或极坐标图中的 theta-r,三维图中的 x-y-z,等等)指定点的区域。创建带坐标轴的图的最简单方法是使用 pyplot.subplots。然后,我们可以使用 Axes.plot 在坐标轴上绘制一些数据;

以下是 Matplotlib 图表的组成部分。

pidrA5d.png

4.1 Figure(画布)

在Matplotlib中,Figure 是图表的顶层容器,它包含了所有绘图元素。Figure 对象是整个图表的最外层结构,可以包含一个或多个 Axes对象(坐标轴),文本元素、线条、图像等。每个图表都至少包含一个 Figure

创建 Figure 的常用方式是使用 plt.figure() 函数

import matplotlib.pyplot as plt 
# 创建一个空白的Figure
fig = plt.figure() 

当然,也可以通过面向对象的方式使用 plt.subplots() 来创建包含一个或多个 AxesFigure

fig = plt.figure()  # 一个空的画布,没有坐标轴
fig, ax = plt.subplots()  # 一个画布,带有一个坐标轴
fig, axs = plt.subplots(2, 2)  # 一个画布带有2✖2的坐标轴
# 一个画布,带有一组自由排列的坐标轴
fig, axs = plt.subplot_mosaic([['left', 'right_top'],
                               ['left', 'right_bottom']])
pidruKf.pngpidr35j.pngpidryGR.png

Figure 对象允许你对整个图表进行全局设置,例如设置图表的大小、背景色、边框等。通过 Figure 对象,你可以控制图表的外观和布局。

当你使用 plt 的函数直接绘制图表时(例如 plt.plot()),Matplotlib会在幕后自动为你创建一个默认的 Figure 对象和一个 Axes 对象。这种隐式创建的 Figure 对象在绝大多数情况下足够使用,特别是对于快速绘制简单图形的任务。
Matplotlib在后台维护了一个当前图表(current figure)和当前坐标轴(current axes)的概念,当你使用 plt.plot() 等函数时,它会自动在当前图表上进行绘制。
这种隐式创建的方式对于许多简单的绘图任务非常方便,因为你不需要显式创建 Figure 对象。

4.2 Axes(坐标轴)

在Matplotlib中,Axes是一个非常重要的概念,它是绘图的基本单元。一个Axes对象基本上是一个容器,它包括了该坐标轴下的所有的绘图元素,例如轴线、刻度、标签、图例等。

Axes对象是Figure对象的子对象,每个Axes实例都有自己的坐标系统,通过这个坐标系统,我们可以确定数据在图上的位置。在Axes对象上,我们可以添加各种数据图像,例如散点图、线图、柱状图等。

fig, axs = plt.subplots(2, 2)
ax1, ax2, ax3, ax4 = axs.flatten() # 将Axes对象转换为一维数组
ax1.plot([1, 2, 3])
ax2.bar([1, 2, 3], [3, 1, 2])
ax3.scatter([1, 2, 3], [3, 1, 2])
ax4.hist([1, 2, 3])
fig

pidrZ8I.png

4.3 Axis(轴)

在Matplotlib中,“axis”(轴)是指在画布上(Figure)一个坐标轴(Axes)的轴线(Axis)如x轴, y轴等,用于标记和定位数据点。每个坐标轴由以下组成:

X轴(水平轴):表示水平方向上的数据范围。

Y轴(垂直轴):表示垂直方向上的数据范围。

通过控制坐标轴的范围、外观和标签,可以有效地可视化和解释数据。

4.4 Artist(图形元素)

基本上,Figure 上可见的一切都是图像元素(甚至是 Figure、Axes 和 Axis 对象)。这包括文本对象、Line2D 对象、集合对象、补丁对象等。渲染 Figure时,所有的图形元素都会绘制到画布上。大多数 图形元素都与一个坐标轴(Axes)绑定;这样的 图形元素不能被多个坐标轴(Axes)共享,也不能从一个坐标轴(Axes)移动到另一个坐标轴(Axes)。

常见的图形元素如:

  • 图例(Legend):用于标识不同元素或数据系列的含义。它可以显示在图表的特定位置,并指示每个图例项与哪个元素或数据系列相关联。
  • 网格(Grid):用于在坐标轴上添加网格线,以提供可视化参考。网格线可以水平和垂直跨越整个绘图区域,帮助读者更好地理解数据点的位置和分布。
  • 标题(Title):用于为整个图表或特定坐标轴添加标题。标题可以说明整个图表的主题或坐标轴所表示的数据内容。
    这些图形元素在Matplotlib中都有相应的方法和属性来控制它们的外观和位置,我们可以自定义它们的外观,以满足特定的需求和设计要求。

图形元素多种多样,具体的使用方法,在后续的系列中,当我们使用到的时候,再逐一说明;

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sssugarr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值