如何用pyplot生成一个随机漫步
先创建一个random_walk.py
from random import choice
class RandomWalk:
# 创建一个RandomWalk类
def __init__(self, points_num): # 随机漫步的步数
self.points_num = points_num
self.x_value = [0] # 初始化x的坐标为0
self.y_value = [0] # 初始化y的坐标为0
def fill_walk(self):
# 不断漫步,直到列表达到指定的长度
while len(self.x_value) < self.points_num:
# 设置点的漫步方向和漫步距离
x_direction = choice([-1, 1]) # 当x为-1时向左,x为1时向右
x_distance = choice([0, 1, 2, 3, 4, 5]) # 随机选择移动的距离
x_step = x_direction*x_distance # 包含步数以及方向
# 例如x_step为-3即表示向左走三步
y_direction = choice([-1, 1])
y_distance = choice([0, 1, 2, 3, 4, 5])
y_step = y_direction * y_distance
# 拒绝原地踏步
if x_step == 0 or y_step == 0:
continue # 如果满足上面的条件则再执行一遍循环
#显示下一个点的位置(在上一个点的基础上漫步)
next_x = self.x_value[-1] + x_step
next_y = self.y_value[-1] + y_step
self.x_value.append(next_x) # 将位移后的点存放进列表中
self.y_value.append(next_y)
设置好这些属性和方法后要开始模拟随机漫步了
创建一个新的文件
rw_visual.py
from random_walk import RandomWalk
import matplotlib.pyplot as plt
# 不断生成随机漫步图像
while True:
rw = RandomWalk(50000)
rw.fill_walk() # 调用漫步方法
plt.figure(figsize=(10, 6)) # 修改尺寸
points_num = list(range(rw.points_num))
# 使用颜色映射,随机漫步的颜色从浅到深,突出路径
plt.scatter(rw.x_value, rw.y_value, c=points_num, cmap=plt.cm.Blues, s=1)
plt.title("random walk", fontsize=10)
plt.scatter(0, 0, c="green", s=50) #突出起点
plt.scatter(rw.x_value[-1], rw.y_value[-1], s=50, c="red") # 突出终点
plt.axis("off") # 删除了坐标轴
plt.show()
keep_running = input("make another walk?(y/n)")
if keep_running == "n":
break
查看效果: