在python matplotlib中绘制函数

2024-05-11 19:41:55 发布

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

这是我的密码:

import random
import numpy as np
import matplotlib.pyplot as plt
import agent




deer = agent.Agent()
print(deer.x,deer.y)
deer.step()

print(deer.x,deer.y)

def walk(length):


    for i in range(length):
        #while deer.x <= i:
        deer.step()
        countx= deer.x + 1
        county=deer.y +1

        #print(countx,county)
        x= countx
        y= county
    return deer.step()

walk(100)

walker = walk(100)
plt.plot(walk[0],walk[1],label= 'Random walk')
plt.scatter(walk[0],walk[1],s=50,c=range(101))
plt.show()

我想让x和y的计数步是的,但是我不明白为什么它不能识别函数中的x和y值。目标是绘制所采取的100个随机步骤。你知道吗

在有了100个步骤中的一个情节之后,我正在尝试创建第二个方法来执行一个步骤。与其选择一个随机的新角度并移动,代理的当前方向应该改变一个随机量,这个随机量是从均值为0,标准偏差Sigma=1的正态分布中选择的(自我定位= 自我定位+ np.随机.正态(0,Sigma))。你知道吗

它还假设要走100步,使用matplolib显示轨迹,并显示代理与其起点之间的距离。你知道吗

我用了班级代理:

    class Agent:
# initializer with default argument value
def __init__(self,sigma=0.5):
    self.x = 0.0 # agent's x position
    self.y = 0.0 # agent's y position
    self.o = 0.0 # agent's orientation
    self.v = 1.0 # agent's velocity
    self.sigma = sigma

def step(self):
    self.o = random.random()*2*np.pi
    self.x +=self.v*np.cos(self.o)
    self.y += self.v*np.sin(self.o)

def turn(self):
    self.o += np.random.normal(0,self.sigma)
    self.x += self.v*np.cos(self.o)
    self.y += self.v*np.sin(self.o)

def distance(self):
    return np.sqrt(self.x**2 + self.y**2)

Tags: importselfdefstepnp步骤pltrandom