Подсюжет не работает должным образом

Вот код, который я написал для создания подзаговора 2 на 2.

Код представлен ниже:

import math
import numpy
import functools
import operator
from fractions import Fraction
import matplotlib.pyplot as plt
import pylab
from pylab import *


def nCk(n, k):
    return int(functools.reduce(operator.mul,
                                (Fraction(n-i, i+1) for i in range(k)), 1))

Theta = 0.5 cList = numpy.arange(-5, 5, 1) NList = [5, 10, 100, 1000]

for i in list(range(len(NList))):
    N = NList[i]
    print(N)
    dList = []

    for c in cList:
        print(c)
        var = math.floor(float(N*Theta) + float(c*Theta*(1-Theta)*math.sqrt(N)))
        dList.append(pow(0.5, N)*(sum(nCk(N, x) for x in range(var))))

    print([1+math.floor(i/2), 1+i % 2])

    # plt.subplot(4,1+math.floor(i/2),1+i%2)
    # plt.plot(cList,dList)
    # plt.title([1+math.floor(i/2),1+i%2])

    subplot(4, 1+math.floor(i/2), 1+i % 2)
    fig = plot(cList, dList)


# plt.savefig('C:/Users/Sumit_G/foo1.png')
pylab.savefig('C:/Users/Sumit_G/foo.png')

Однако вместо того, чтобы получить участок 2 на 2.

Я получаю фигуру, приведенную ниже:

введите здесь описание изображения


person Sumit    schedule 22.10.2015    source источник
comment
Помимо проблемы с подзаголовком, в коде можно исправить или упростить множество вещей. Например, при доступе к значению и его индексу в массиве мы обычно делаем это так: for i,N in enumerate(NList):. И есть функция scipy для комбинаций (scipy.misc.comb). И я считаю, что сумма комбинаций может быть упрощена (математически говоря) и так далее...   -  person Emilien    schedule 22.10.2015


Ответы (2)


Вы излишне занижаете и модифицируете свои ценности. Subplot принимает 3 аргумента subplot(nrows, ncols, plot_number) (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot), где номер_графика — это активный график, начиная с 1 (вверху слева) и заканчивая at nrows*ncols (внизу справа). См. прилагаемые графики.

введите здесь описание изображения

person Dawid Laszuk    schedule 22.10.2015

пытаться:

fig = plt.fugure()
for i in range(4):
    ax = fig.add_subplot(2,2,i+1)
    ax.plot(whatever)
person Julien    schedule 22.10.2015
comment
Для меня это перекрытие всех графиков, по крайней мере, с использованием colab. - person cnexans; 23.06.2020