Создайте несколько случайно сгенерированных линейных графиков на одном графике, вызвав функцию, которая содержит команду plot - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь построить несколько случайно сгенерированных линейных графиков на одном графике.

Функция def SnSim(S) генерирует случайные числа и наносит их на график, но каждый из них появляется в отдельном окне графика, когда я вызываюфункция SnSim(S) более одного раза в for loop ниже.

Есть идеи, как сделать так, чтобы три линейных графика появлялись на одном графике?(код ниже работает, просто вырезать и вставить как есть).Спасибо.

import math
import random
import matplotlib.pyplot as plt

steps=10 #how many random numbers to generate per line graphed
z=random.random()
So=100
Strike=105
N=3 #how many times to call the SnSim(S) function.

def Sn(S): return S*(1+z)

def SnSim(S):
    listSi = []
    listr = list(range(0,steps))
    Si=Sn(S)
    for i in range (0,steps):
        z=random.random()
        Si=Si + Si*z
        listSi.append(float(Si))

    plt.plot(listr,listSi)
    plt.show()
    print(listSi)
    return(Si)

sum=0
for a in range (0,N):
    z=random.random()
    sum=sum + max((SnSim(So)-Strike),0)

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

, как упоминалось в Tex4066, выньте из цикла команду plt.show(), или просто избавьтесь от нее, и используйте plt.ion() один раз, что покажет вещи по мере их построения, и вам не понадобится plt.show()

0 голосов
/ 24 сентября 2019

Переместите строку plt.show() ниже петли for.

def SnSim(S):
    listSi = []
    listr = list(range(0,steps))
    Si=Sn(S)
    for i in range (0,steps):
        z=random.random()
        Si=Si + Si*z
        listSi.append(float(Si))
    plt.plot(listr,listSi)
    print(listSi)
    return(Si)

sum=0
for a in range (0,N):
    z=random.random()
    sum=sum + max((SnSim(So)-Strike),0)
plt.show()

plt.show() отображает все фигуры и блоки, пока фигуры не будут закрыты.Таким образом, мы должны вызывать его только после того, как все данные были нанесены на график.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...