matplotlib 设置figure的尺寸
在使用matplotlib进行数据可视化时,我们经常需要调整图像的尺寸以适应不同的展示需求,比如在文章中插入图片时需要调整尺寸,或者在报告中展示大量图表时需要使得图表紧凑排列。在matplotlib中,我们可以通过设置figure的尺寸来实现这一目的。
设置figure的默认尺寸
在matplotlib中,我们可以通过plt.rcParams
来设置全局的默认参数,包括figure的大小。默认情况下,figure的大小为(6.4, 4.8)
,我们可以通过设置figure.figsize
参数来改变这个默认值。
import matplotlib.pyplot as plt
# 获取当前的默认配置
fig_size = plt.rcParams["figure.figsize"]
print("当前figure的默认尺寸为:", fig_size)
# 设置新的默认尺寸为(8, 6)
plt.rcParams["figure.figsize"] = [8, 6]
# 输出修改后的默认尺寸
fig_size_updated = plt.rcParams["figure.figsize"]
print("修改后的figure默认尺寸为:", fig_size_updated)
运行结果:
当前figure的默认尺寸为: [6.4, 4.8]
修改后的figure默认尺寸为: [8.0, 6.0]
通过上面的示例代码,我们成功地将figure的默认尺寸修改为了(8, 6)
。
设置单个figure的尺寸
除了修改全局的默认尺寸,我们还可以在每个figure创建时单独设置其尺寸。可以通过plt.figure(figsize=(width, height))
来设置新的尺寸。
import matplotlib.pyplot as plt
# 创建一个figure,尺寸为(10, 5)
plt.figure(figsize=(10, 5))
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title("Example Plot")
plt.show()
Output:
运行上面的代码,会生成一幅尺寸为(10, 5)
的图像,展示了一个简单的折线图。
调整subplot的尺寸
在一个figure中可能包含多个subplot,我们也可以分别设置每个subplot的尺寸。可以通过plt.subplot2grid
方法来设置不同subplot的大小和位置。
import matplotlib.pyplot as plt
plt.subplot2grid((2, 2), (0, 0), colspan=2)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title("First Subplot")
plt.subplot2grid((2, 2), (1, 0))
plt.plot([1, 2, 3, 4], [1, 2, 3, 4])
plt.title("Second Subplot")
plt.subplot2grid((2, 2), (1, 1))
plt.plot([1, 2, 3, 4], [4, 3, 2, 1])
plt.title("Third Subplot")
plt.tight_layout()
plt.show()
Output:
运行结果展示了一个包含三个subplot的图像,每个subplot的尺寸和位置被精确控制。
设置figure的分辨率
除了设置figure的大小外,我们还可以设置figure的分辨率,即每英寸像素点的数量。可以通过plt.savefig
保存图像时设置dpi
参数来指定分辨率。
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 3), dpi=100)
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title("Example Plot")
plt.savefig("example_plot.png", dpi=300)
plt.show()
Output:
运行上面的代码会生成一个尺寸为(4, 3)
的图像,并保存为example_plot.png
文件,分辨率为300 DPI。
调整figure大小与子图间距
在绘制包含多个子图的figure时,我们可能需要调整figure的大小以及子图之间的间距。可以通过参数figsize
和subplots_adjust
来实现。
import matplotlib.pyplot as plt
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
plt.subplots_adjust(left=0.1, bottom=0.1, right=0.9, top=0.9, wspace=0.3, hspace=0.3)
for i in range(2):
for j in range(2):
axs[i, j].plot([1, 2, 3, 4], [1, 2, 3, 4])
axs[i, j].set_title(f"Subplot ({i}, {j})")
plt.show()
Output:
运行结果展示了一个包含4个子图的图像,每个子图之间的间距和figure的大小被精确调整。
修改已有figure的大小
有时候我们可能需要修改已经存在的figure的大小,可以通过set_size_inches
方法来实现。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])
# 将图像大小修改为(8, 6)
fig.set_size_inches(8, 6)
plt.show()
Output:
运行结果会展示一个尺寸为(8, 6)
的图像。
使用rcParams设置默认尺寸
除了直接设置figure的尺寸外,我们还可以通过rcParams
来设置默认的尺寸参数,以在整个程序中生效。
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['figure.figsize'] = [6.0, 4.0]
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title("Example Plot")
plt.show()
Output:
以上代码将默认的figure尺寸设置为(6, 4)
,这样在之后创建的所有figure中都会使用这个默认尺寸。
使用面向对象的方法设置figure尺寸
在matplotlib中,我们可以通过面向对象的方式来设置figure的尺寸,这样更加灵活。
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(6, 4))
ax.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.show()
Output:
以上代码中,我们通过plt.subplots(figsize=(6, 4))
方法创建了一个大小为(6, 4)
的figure。