通过调用包含Plot命令的函数,在同一绘图上绘制多个随机生成的折线图

2024-09-26 22:54:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在同一个图上画几个随机生成的线图

def SnSim(S)函数生成随机数并打印它们,但是当我在下面的for loop中多次调用SnSim(S)函数时,每个随机数都出现在不同的打印窗口中

有没有办法把三条线的图放在同一个图上(下面的代码运行,只需按原样剪切和粘贴即可。谢谢你

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)

Tags: to函数importfordefrangepltrandom
2条回答

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()显示所有图形和块,直到图形关闭。因此,我们必须在所有的数据被绘制出来之后才调用它

正如Tex4066所提到的,将plt.show()命令从循环中取出,或者去掉它并使用plt.ion()一次,它将在绘制时显示事物,您将不需要plt.show()

相关问题 更多 >

    热门问题