改变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()
函数来实现。在实际应用中,可以根据实际需求选择合适的方法进行调整,以达到最佳的图形展示效果。