如何在循环中添加子图

时间:2016-01-02 08:23:31

标签: python numpy matplotlib

我有一个循环,我想在其中创建三个子图。以下是一些删除了函数定义的代码。

n = 14
dets = []
entropies = []

N = 1000


fig = plt.figure()

# The loop.
for h in xrange(2,8,2):
    for i in xrange(N):
        A = (np.random.randint(2, size=(h,n)))*2-1
        detA_Atranspose = np.linalg.det(np.dot(A, A.transpose()))
        logdetA_Atranspose = math.log(detA_Atranspose + 1,2)
        H = compute_entropy(A)
        entropies.append(H)
        dets.append(logdetA_Atranspose)

    ax1 = fig.add_subplot(311)
    ax1.plot(dets, entropies, 'ro')

plt.show()

然而,有一些我不知道该怎么做。

  • 在上面的代码中,我需要在第二次迭代中使用ax2 = fig.add_subplot(312) ax2.plot(dets, entropies, 'ro')并在第三次迭代中使用ax3 = fig.add_subplot(313) ax3.plot(dets, entropies, 'ro')来创建三个子图。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用plt.subplots并执行以下操作:

fig, ax = plt.subplots(nrows = 3, ncols = 1)

hs = [2,8,2]

for p in xrange(3):
    h = hs[p]
    for i in xrange(N):

        # skip other code

    ax[p].plot(dets, entropies, 'ro')