改变Matplotlib子图大小/位置

改变Matplotlib子图大小/位置

在使用Matplotlib绘图时,常常需要对子图的大小和位置进行调整,以确保图形最佳展示效果。本文将介绍Matplotlib如何改变子图大小和位置的方法。

改变子图大小

Matplotlib提供了多种方式来改变子图的大小,包括通过figsize参数设置画布大小、调用subplots_adjust函数调整子图间距,以及调用set_size_inches函数调整子图大小。

通过figsize参数设置画布大小

在绘制子图前,可以通过plt.subplots()中的figsize参数设置画布大小。该参数需要传入两个参数分别表示画布的宽度和高度。例如:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制子图
fig, ax = plt.subplots(figsize=(8, 6))  # 设置画布大小为8*6
ax.plot(x, y)

plt.show()

可以看到,通过设置figsize参数,画布的大小变为了8*6。如果需要调整子图的位置和大小,可以使用subplots_adjust函数。

调用subplots_adjust函数调整子图间距

subplots_adjust函数可以调整子图在画布中的位置和间距。函数需要传入四个参数,分别表示子图的上边距、下边距、左边距、右边距。例如:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制子图
fig, ax = plt.subplots(2, 2, figsize=(8, 6))  # 设置画布大小为8*6
fig.subplots_adjust(top=0.95, bottom=0.05, left=0.05, right=0.95, hspace=0.3, wspace=0.3)

ax[0, 0].plot(x, y)
ax[0, 1].plot(x, y)
ax[1, 0].plot(x, y)
ax[1, 1].plot(x, y)

plt.show()

可以看到,我们设置了上下左右边距分别为0.95、0.05、0.05、0.95,水平和垂直间距均为0.3,从而使子图在画布中的位置和间距得到了调整。

调用set_size_inches函数调整子图大小

在绘制子图后,还可以通过调用set_size_inches函数来调整子图的大小。该函数需要传入一个元组,分别表示子图的宽度和高度。例如:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制子图
fig, ax = plt.subplots()
ax.plot(x, y)

fig.set_size_inches(8, 6)  # 设置子图大小

plt.show()

可以看到,通过调用set_size_inches函数,我们成功将子图的大小设置为了8*6。

改变子图位置

如果需要更改子图的位置,可以使用subplots()函数中的gridspec_kw参数或者add_axes()函数来实现。

调整subplots()函数中的gridspec_kw参数

subplots()函数中的gridspec_kw参数可以指定子图在画布中的网格位置和布局。该参数需要传入一个字典,包含以下键值:

  • left:子图左边缘位置,取值范围为0到1之间。
  • right:子图右边缘位置,取值范围为0到1之间。
  • bottom:子图下边缘位置,取值范围为0到1之间。
  • top:子图上边缘位置,取值范围为0到1之间。
  • wspace:子图水平间距,取值范围为0到1之间。
  • hspace:子图垂直间距,取值范围为0到1之间。

例如:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制子图
fig, ax = plt.subplots(2, 2, figsize=(8, 6), gridspec_kw={'left':0.1, 'right':0.9, 'top':0.9, 'bottom':0.1, 'wspace':0.4, 'hspace':0.4})

ax[0, 0].plot(x, y)
ax[0, 1].plot(x, y)
ax[1, 0].plot(x, y)
ax[1, 1].plot(x, y)

plt.show()

可以看到,通过设置gridspec_kw参数,子图在画布中的位置和间距得到了调整。

调用add_axes()函数调整子图位置

除了在subplots()函数中指定子图位置,还可以使用add_axes()函数来手动添加子图,并指定其位置和大小。该函数需要传入一个元组,分别表示子图左边缘位置、子图下边缘位置、子图宽度和子图高度。例如:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.arange(0, 10, 0.1)
y = np.sin(x)

# 绘制子图
fig = plt.figure(figsize=(8, 6))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])  # 指定子图的位置和大小
ax.plot(x, y)

plt.show()

可以看到,通过手动添加子图并指定其位置和大小,我们成功将子图放置在了画布的左下角,并调整了其大小。

结论

Matplotlib提供了多种方式来调整子图的大小和位置,包括通过figsize参数设置画布大小、调用subplots_adjust函数调整子图间距,以及调用set_size_inches函数调整子图大小。如果需要更改子图的位置,可以使用subplots()函数中的gridspec_kw参数或者add_axes()函数来实现。在实际应用中,可以根据实际需求选择合适的方法进行调整,以达到最佳的图形展示效果。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程