如何制作重叠的matplotlib.pyplot子图?

时间:2017-03-15 03:27:49

标签: python matplotlib

我正在学习如何使用子图。例如:

import numpy
import matplotlib.pyplot as plt

plt.figure(1)
plt.subplot(221)
plt.subplot(222)
plt.subplot(223)

plt.show()

plt.close(1)

我在图1中得到3个子图

现在我想在第一个子图中创建一个大的子图。我试过了:

plt.figure(1)
plt.subplot(111)
plt.subplot(222)
plt.subplot(223)

但第一个副图消失了。

我的问题:是否有可能重叠子图?

谢谢

3 个答案:

答案 0 :(得分:3)

如果您想要完全控制子图的大小和位置,请改用Matplotlib add_axes方法。

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(6, 4))

ax1 = fig.add_axes([0.1, 0.1, 0.85, 0.85])
ax2 = fig.add_axes([0.4, 0.6, 0.45, 0.3])
ax3 = fig.add_axes([0.6, 0.2, 0.2, 0.65])

ax1.text(0.01, 0.95, "ax1", size=12)
ax2.text(0.05, 0.8, "ax2", size=12)
ax3.text(0.05, 0.9, "ax3", size=12)

plt.show()

Imgur

答案 1 :(得分:1)

无法使用plt.subplots()创建重叠的子图。此外,plt.subplot2grid将无效。

但是,您可以使用figure.add_subplot()方法创建它们。

import matplotlib.pyplot as plt
fig = plt.figure(1)
fig.add_subplot(111)
fig.add_subplot(222)
fig.add_subplot(223)

plt.show()

enter image description here

答案 2 :(得分:0)

您可以使用mpl_toolkits.axes_grid1.inset_locator.inset_axes在现有图形上创建插入轴。 我在末尾添加了print语句,该语句显示了两个轴的列表。

import matplotlib.pyplot as plt
import mpl_toolkits.axes_grid1.inset_locator as mpl_il

plt.plot() 

ax2 = mpl_il.inset_axes(plt.gca(), width='60%', height='40%', loc=6)
ax2.plot()

print(plt.gcf().get_axes())
plt.show()

Creating inset axes on existing figure