📌  相关文章
📜  如何在Python中的 Matplotlib 中设置子图之间的间距?

📅  最后修改于: 2022-05-13 01:54:48.316000             🧑  作者: Mango

如何在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. 导入库
  2. 创建/加载数据
  3. 制作子图
  4. 绘制子图
  5. 设置子图之间的间距。

为此,我们可以使用下面以示例形式解释的一些方法:

示例 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()

输出: