您的位置:

深入探究matplotlib.figure函数

一、figure概述

Matplotlib是Python中著名的可视化库之一,其核心的figue函数是画布的概念,是Matplotlib中处理图形的核心概念。figure函数通过创建一个画布来容纳绘制的对象,如图表、子图和其他可视化元素,同时也可以进行窗口管理,并提供一些高级的操作,如保存图像和深度自定义设置。总的来说,figure对于Matplotlib的使用和功能是至关重要的。

import matplotlib.pyplot as plt

# 创建有1个子图的画布
fig = plt.figure()

二、figure函数参数

figure函数可以传递一些参数,以满足使用的需要。常用的参数如下:

1. figsize

该参数设置创建的绘图对象的尺寸,如(width, height),默认为(6.4, 4.8),单位为英寸。

fig = plt.figure(figsize=(10, 6))

2. dpi

该参数为图像分辨率,即每英寸包含的像素点数,默认为100。因此,例子中的画布宽度为10英寸,高度为6英寸,正好包含1000(10*100)个像素和600(6*100)个像素,图像分辨率为100*100。

fig = plt.figure(figsize=(10, 6), dpi=200)

3. facecolor 和 edgecolor

该参数设置图形的背景色和边框颜色,默认为背景色为白色(#ffffff),边框颜色为None。

fig = plt.figure(figsize=(10, 6), dpi=200, facecolor='#e5f2ff', edgecolor='#1f77b4')

4. frameon

该参数设置是否在图形周围绘制边框,默认为True。

fig = plt.figure(figsize=(10, 6), dpi=200, facecolor='#e5f2ff', edgecolor='#1f77b4', frameon=False)

5. tight_layout

该参数为布尔类型,表示是否自动调整子图参数,以便它们填充整个图形区域,默认值为False。使用tight_layout可以确保子图和标签完全覆盖整个图形区域。

fig = plt.figure(figsize=(10, 6), dpi=200, facecolor='#e5f2ff', edgecolor='#1f77b4', frameon=False, tight_layout=True)

三、子图的创建方法

1. add_subplot

使用add_subplot添加子图,add_subplot接受三个整数参数,表示把画布分成几行几列,应该在哪个位置添加子图。它返回的是AxesSubplot实例。

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8, 6), dpi=100)
ax1 = fig.add_subplot(2, 2, 1)
ax1.plot([1, 2, 3, 4], [1, 4, 9, 16]) 
ax2 = fig.add_subplot(2, 2, 2)
ax2.scatter([1, 2, 3, 4],[1, 4, 9, 16])
ax3 = fig.add_subplot(2, 2, 3)
ax3.bar([1, 2, 3, 4],[1, 4, 9, 16])
ax4 = fig.add_subplot(2, 2, 4)
ax4.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()

2. subplots

subplots函数方便地创建多个子图,返回一个数组对象,其中包含所有子图。

import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2, figsize=(8, 6), dpi=100)
axs[0, 0].plot([1, 2, 3, 4], [1, 4, 9, 16])
axs[0, 1].scatter([1, 2, 3, 4],[1, 4, 9, 16])
axs[1, 0].bar([1, 2, 3, 4],[1, 4, 9, 16])
axs[1, 1].plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()

四、保存图像

可以通过savefig方法将图像保存为图像文件,可以指定文件格式。需要注意,必须在plt.show()函数之前调用savefig函数,因为图像输出后窗口就被关闭了。

fig.savefig('my_figure.png')