使用matplolib - Python

时间:2017-09-19 19:30:30

标签: python

尝试使用两个列表中的点构建图表:

坐标y - y[i]x - y1[i]

yx。 我正在尝试使用pl.plot()函数。但我失去了如何使用我的列表中的积分。你能建议我该怎么做吗?

我的代码如下:

import matplotlib.pyplot as pl
import random
import math
import numpy as np
disp=0.8
m=0.5

y=[]
y1=[]
for i in range(200):
    y.append(0)
for i in range(100):
    y1.append(0)

i=0
for x in np.arange(0.0, 1.0, 0.005):
    f=pow(2.71,-((x-m)*(x-m)/(2*(disp))))/(math.sqrt((disp)*2.51))
    y[i]=f
    i=i+1
print("f1:",f)
i=0
for x in np.arange(0.0, 1.0, 0.05):
    f = 0.5 * (1 + math.erf((x - m) / (1.41 * math.sqrt(disp))))
    y[i]=f
    i=i+1
print("f2:",f)
#Do some operations with the values and then put them in y and y1 
#The loop is below. Sure, it is not right...
#Please,help..
for i in y:
    pl.plot([y[i]],[y1[i]])
pl.show()

感谢您的帮助......

1 个答案:

答案 0 :(得分:0)

您应该将两个列表都传递给plot

pl.plot(y, y1)

此外,您可以优化所有变异yy1的循环。例如,

for x in np.arange(0.0, 1.0, 0.005):
    f=pow(2.71,-((x-m)*(x-m)/(2*(disp))))/(math.sqrt((disp)*2.51))
    y[i]=f
    i=i+1

很容易转换为

y = np.apply_along_axis(
      lambda x: pow(2.71, -(x-m)*(x-m)/(2*disp))/math.sqrt(disp*2.51),
      0, 
      np.arange(0.0, 1.0, 0.005)
    )