如何在 Matplotlib 中创建不同的子图大小?
在本文中,我们将学习使用 Matplotlib 创建不同大小的支线剧情的不同方法。它提供了 3 种不同的方法,使用这些方法我们可以创建不同大小的不同子图。
创建子剧情的可用方法:
- 网标
- 电网规格 _kw
- 子批次 2 网格
1。Gridspec : GridSpec 模块中的 Gridspec 用于调整子图网格的几何图形。我们可以使用不同的参数来调整形状、大小、列数和行数。
代码:
蟒蛇 3
# importing required libraries
import matplotlib.pyplot as plt
from matplotlib import gridspec
import numpy as np
# create a figure
fig = plt.figure()
# to change size of subplot's
# set height of each subplot as 8
fig.set_figheight(8)
# set width of each subplot as 8
fig.set_figwidth(8)
# create grid for different subplots
spec = gridspec.GridSpec(ncols=2, nrows=2,
width_ratios=[2, 1], wspace=0.5,
hspace=0.5, height_ratios=[1, 2])
# initializing x,y axis value
x = np.arange(0, 10, 0.1)
y = np.cos(x)
# ax0 will take 0th position in
# geometry(Grid we created for subplots),
# as we defined the position as "spec[0]"
ax0 = fig.add_subplot(spec[0])
ax0.plot(x, y)
# ax1 will take 0th position in
# geometry(Grid we created for subplots),
# as we defined the position as "spec[1]"
ax1 = fig.add_subplot(spec[1])
ax1.plot(x, y)
# ax2 will take 0th position in
# geometry(Grid we created for subplots),
# as we defined the position as "spec[2]"
ax2 = fig.add_subplot(spec[2])
ax2.plot(x, y)
# ax3 will take 0th position in
# geometry(Grid we created for subplots),
# as we defined the position as "spec[3]"
ax3 = fig.add_subplot(spec[3])
ax3.plot(x, y)
# display the plots
plt.show()
输出:
说明:
为不同的子场景创建网格
spec = gridspec。GridSpec(ncols=2,nrows=2,width_ratings =[2,1],wspace=0.5,hspace=0.5,height_ratings =[1,2])
这里是格里德佩克。GridSpec()"将为子情节创建网格。我们可以使用不同的参数来调整网格和每个图的大小。
- ncol:在网格中传递所需的列数。
- nrows : 传递我们想要在 Grid 中制作支线剧情的行数。
- width_ratings:设置子剧情的宽度比(调整剧情宽度)。
- 高度_比率:设置子剧情的高度比率(调整剧情高度)。
- wspace : 给“wspace”一定的空间,垂直分隔各个支线剧情。
- hs space:水平给“hs space”一定的空间来分隔支线剧情。
2。gridspec_kw : 是 Matplotlib 中“PLT.subplots()”方法内的字典。通过向字典传递不同的参数,我们可以调整每个子情节的形状和大小。
代码:
蟒蛇 3
# importing required libraries
import matplotlib.pyplot as plt
import numpy as np
# setting different parameters to adjust each grid
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(7, 7),
gridspec_kw={
'width_ratios': [3, 3],
'height_ratios': [3, 3],
'wspace': 0.4,
'hspace': 0.4})
# initializing x,y axis value
x = np.arange(0, 10, 0.1)
y = np.tan(x)
# ax[0][0] will take 0th position in
# geometry(Grid we created for subplots)
ax[0][0].plot(x, y)
# ax[0][0] will take 0th position in
# geometry(Grid we created for subplots)
ax[0][1].plot(x, y)
# ax[0][0] will take 0th position in
# geometry(Grid we created for subplots)
ax[1][0].plot(x, y)
# ax[0][0] will take 0th position in
# geometry(Grid we created for subplots)
ax[1][1].plot(x, y)
plt.show()
输出:
说明:
设置不同参数调整每个网格
图,ax = plt .子图(nrows=2,ncols=2,figsize=(7,7),grid spec_kw = { ' width_ratings ':[3,3],' height_ratings ':[3,3],' wspace' : 0.4,' hspace' : 0.4})
“grid spec_kw = { }”是一个带有按键的字典,使用它我们可以改变每个网格的形状、大小和调整。
- n 显示:网格中的行数
- ncols : 网格中的列数
- 宽度比:设置每个子图的宽度大小
- 高度比:设置各子图的高度大小
- wspace : 给“wspace”一定的空间,垂直分隔各个支线剧情。
- hs space:水平给“hs space”一定的空间来分隔支线剧情。
- figsize : 设置子剧情的大小。
3。sublot 2 grid:它提供了更多的灵活性,可以在任何位置创建网格。我们可以非常容易地横向和纵向扩展网格。
代码:
蟒蛇 3
# importing required library
import matplotlib.pyplot as plt
import numpy as np
# creating grid for subplots
fig = plt.figure()
fig.set_figheight(6)
fig.set_figwidth(6)
ax1 = plt.subplot2grid(shape=(3, 3), loc=(0, 0), colspan=3)
ax2 = plt.subplot2grid(shape=(3, 3), loc=(1, 0), colspan=1)
ax3 = plt.subplot2grid(shape=(3, 3), loc=(1, 2), rowspan=2)
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax5 = plt.subplot2grid((3, 3), (2, 1), colspan=1)
# initializing x,y axis value
x = np.arange(0, 10, 0.1)
y = np.cos(x)
# plotting subplots
ax1.plot(x, y)
ax1.set_title('ax1')
ax2.plot(x, y)
ax2.set_title('ax2')
ax3.plot(x, y)
ax3.set_title('ax3')
ax4.plot(x, y)
ax4.set_title('ax4')
ax5.plot(x, y)
ax5.set_title('ax5')
# automatically adjust padding horizontally
# as well as vertically.
plt.tight_layout()
# display plot
plt.show()
输出:
说明:
ax1 = PLT.sublot 2 grid(shape =(3,3),loc=(0,0),col span = 3) ax2 = PLT.sublot 2 grid(shape =(3,3),loc=(1,0),col span = 1) ax3 = PLT.sublot 2 grid(shape =(3,3),loc=(1,2),row span = 2) ax4 = PLT.sublot 2 grid((3,3),(2,0)) ax5 = pls
这里,形状表示行数和列数,loc 表示网格的几何位置。假设我们在 ax1 中使用 colspan = 3,这意味着这些子图将覆盖该行的所有 3 列。类似地,在 ax2 中,colspan=1 意味着它将在其位置覆盖 1 列空间。对于 ax3,rowspan=2 意味着它将覆盖 2 行的空间。如果我们给出不规则的输入,那么它会给出错误,所以我们给了 colspan 和 rowspan 适当的值。