matplotlib.pyplot:创建存储图的子图

时间:2017-11-03 15:06:42

标签: python-3.x matplotlib plot

python 3.6 om mac matplotlib 2.1.0 使用matplotlib.pyplot(作为plt)

让我说我有一些plt.figures()我附加到一个名为数字的列表中作为对象。当我在命令行中执行:figures[0]时,它会生成列表figures的索引0的图。 但是,我如何安排将数字中的所有图都放在子图中。

# Pseudo code: 
plt.figure() 
for i, fig in enumerate(figures):   # figures contains the plots
    plt.subplot(2, 2, i+1)
    fig   # location i+1 of the subplot is filled with the fig plot element  

因此,我会得到一个2乘2的网格,其中包含图中的每个图。

希望这是有道理的。

1 个答案:

答案 0 :(得分:3)

数字是一个数字。你不能在图中有一个数字。通常的方法是创建一个图形,创建一个或多个子图,在子图中绘制一些东西。

如果你想要在不同的轴或图中绘制某些东西,可能有必要将绘图包装在一个以轴为参数的函数中。

然后,您可以使用此功能绘制到新图形的轴或绘制到具有许多子图的图形轴。

import numpy as np
import matplotlib.pyplot as plt

def myplot(ax, data_x, data_y, color="C0"):
    ax.plot(data_x, data_y, color=color)
    ax.legend()

x = np.linspace(0,10)
y = np.cumsum(np.random.randn(len(x),4), axis=0)

#create 4 figures
for i in range(4):
    fig, ax = plt.subplots()
    myplot(ax, x, y[:,i], color="C{}".format(i))

# create another figure with each plot as subplot
fig, ax = plt.subplots(2,2)
for i in range(4):
    myplot(ax.flatten()[i], x, y[:,i], color="C{}".format(i))

plt.show()

enter image description here