Matplotlib 画布

在介绍如何使用 Matplotlib 绘制其他图表之前,我们先来介绍一下通用的设置。这些设置不仅可以用于折线图,也可以用于其他大多数图表。通用设置的大多数函数都是直接通过 pyplot 子库来调用的,这一点大家一定要清楚。

import matplotlib.pyplot as plt
plt.函数名()

在 Matplotlib 中,用于通用设置的函数比较多,常用的如下表所示。这一章的内容很重要,也是后面章节的基础,小伙伴们要认真掌握。

Matplotlib 通用设置函数
函数 说明
figure() 画布样式
title()、xlabel()、ylabel() 定义标题
legend() 定义图例
xticks()、yticks() 刻度标签
xlim()、ylim() 刻度范围
grid() 网格线
axhline()、axvline() 参考线
axhspan()、axvspan() 参考区域
annotate() 注释内容(有指向)

在这一节中,我们先来介绍 Matplotlib 是如何设置画布样式的。

Matplotlib 画布函数

在 Matplotlib 中,我们可以使用 figure() 函数来定义画布的样式,包括大小、颜色、边框等。

语法:

plt.figure(
    figsize=None, 
    dpi=None, 
    facecolor=None, 
    edgecolor=None,
    linewidth=None, 
    frameon=True, 
    clear=False, 
    tight_layout=False
)

说明:

figure() 函数接收以下常用参数。

  • figsize(可选):用于定义画布的大小,它的取值是一个元组。比如 figsize=(5, 4) 表示宽度为 5 英寸、高度为 4 英寸(注:1 英寸≈2.54 厘米)。
  • facecolor(可选):用于定义画布的背景颜色。
  • edgecolor(可选):用于定义画布的边框颜色。
  • linewidth(可选):用于定义画布的边框宽度。
  • dpi(可选):用于设置画布的分辨率(即每英寸的点数)。更高的 DPI 值,会生成更高质量的图像。
  • frameon(可选,默认:True):是一个布尔值,表示是否绘制画布的边框。
  • clear(可选,默认:False):是一个布尔值,表示在创建新的 Figure 对象之前是否清除已存在的 Figure。
  • tight_layout(可选,默认:False):是一个布尔值,表示是否自动调整子图参数,以获得紧凑的布局。

facecolor 和 edgecolor 这 2 个参数的取值可以是:

  • 颜色关键字:如 'red'、'green'、'blue'、'lightskyblue' 等。
  • 十六进制 RGB 值:如 '#FFD700'(金色)。
  • RGBA 元组:如 (0, 1, 0, 0.5)(半透明的绿色)。

Matplotlib 画布示例

接下来,我们通过一个简单的例子来讲解一下 Matplotlib 是如何设置画布样式的。

示例:Matplotlib 设置画布样式

import matplotlib.pyplot as plt

# 画布样式
plt.figure(figsize=(5, 4), facecolor='lightskyblue')

# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)

# 显示
plt.show()

运行之后,效果如下图所示。

Matplotlib 设置画布

分析:

我们要特别注意一点,由于画布样式针对的是全局,所以 figure() 函数必须在绘图函数之前进行调用,不然就会有问题。这是因为 figure() 函数会创建一个新的画布对象,后续的绘图操作(比如 plt.plot())都会在这个画布上进行。

如果在绘图函数之后调用 figure(),那么之前的绘图操作将不会显示在新创建的画布上。小伙伴们可以试一下把 figure() 函数放在 plot() 函数之后调用,看看效果又是怎样的。

除了 figure() 函数比较特殊之外,对于其他通用设置函数,如果没有特别说明,那么它们既可以在绘图函数之前调用,也可以在绘图函数之后调用。

此外,figure() 设置的是最底层 “画布” 的颜色。图表中间白色的区域是 “坐标系(Axes)”,它的颜色默认是白色的(可以通过其他方式修改)。

上一篇: Matplotlib 教程

下一篇: Matplotlib 标题

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号