如何在Python中的 Matplotlib 中设置子图之间的间距?
在本文中,我们将看到如何在Python中的 Matplotlib 中设置子图之间的间距。让我们讨论一些概念:
- Matplotlib : Matplotlib 是一个了不起的Python可视化库,用于二维数组绘图。 Matplotlib 是一个基于 NumPy 数组的多平台数据可视化库,旨在与更广泛的 SciPy 堆栈一起使用。它是由 John Hunter 在 2002 年推出的。
- Subplots : matplotlib 库的 pyplot 模块中的 subplots()函数用于创建图形和一组子图。当我们想在同一图中显示两个或多个图时,需要子图。
在这里,首先我们将了解为什么需要设置空间。
Python3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
plt.show()
Python3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
fig.tight_layout()
plt.show()
Python3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
plt.subplots_adjust(left=0.1,
bottom=0.1,
right=0.9,
top=0.9,
wspace=0.4,
hspace=0.4)
plt.show()
Python3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
plt.subplot_tool()
plt.show()
Python3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots with constrained_layout=True
fig, ax = plt.subplots(2, 2,
constrained_layout = True)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
plt.show()
输出:
As,我们可以看到上面的图形轴值过于拥挤且非常混乱。为了解决这个问题,我们需要设置子图之间的间距。
需要的步骤
- 导入库
- 创建/加载数据
- 制作子图
- 绘制子图
- 设置子图之间的间距。
为此,我们可以使用下面以示例形式解释的一些方法:
示例 1:(使用 tiny_layout() 方法)
tiny_layout() 方法自动维护子图之间的适当空间。
蟒蛇3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
fig.tight_layout()
plt.show()
输出:
示例 2:(使用 subplots_adjust() 方法)
我们可以使用 plt.subplots_adjust() 方法来改变 Matplotlib 子图之间的空间。参数 wspace 和 hspace 指定 Matplotlib 子图之间保留的空间。它们分别是轴宽度和高度的分数。参数 left、right、top 和 bottom 参数指定子图位置的四个边。它们是图形宽度和高度的分数。
蟒蛇3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
plt.subplots_adjust(left=0.1,
bottom=0.1,
right=0.9,
top=0.9,
wspace=0.4,
hspace=0.4)
plt.show()
输出:
示例 3:(使用 subplots_tool() 方法)
此方法为图形启动子图工具窗口。它为用户提供了一种交互式方法,可以拖动 subplot_tool 中的栏来更改子图的布局。
蟒蛇3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots
fig, ax = plt.subplots(2, 2)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
# set the spacing between subplots
plt.subplot_tool()
plt.show()
输出:
示例 4:(使用 constrained_layout=True)
蟒蛇3
# importing packages
import numpy as np
import matplotlib.pyplot as plt
# create data
x=np.array([1, 2, 3, 4, 5])
# making subplots with constrained_layout=True
fig, ax = plt.subplots(2, 2,
constrained_layout = True)
# set data with subplots and plot
ax[0, 0].plot(x, x)
ax[0, 1].plot(x, x*2)
ax[1, 0].plot(x, x*x)
ax[1, 1].plot(x, x*x*x)
plt.show()
输出: