今天来看看一份有趣的代码,干有趣的事情!!!随机走的路线,没有明确方向,漫步完就像是一副画,现实生活中,随机的事情很多很多,在一个特定的范围内,产生的随机事情都会有很多。所以今天我们来看看随机漫步是怎样来生成一张好看的图吧。
import matplotlib.pylab as plt
from random import choice
class Rondon():
def __init__(self, num_numbers=5000):
self.num_numbers = num_numbers
# 所有随机漫步数始于(0,0),用于存储x,y的列表值
self.x_values = [0]
self.y_values = [0]
def file_worlk(self):
# 判断随机漫步数是否到达指定长度
while len(self.x_values) < self.num_numbers:
# 决定正或负方向走
x_dirextion = choice([1, -1])
# 步长
x_dirtance = choice([0, 1, 2, 3, 4])
# 总距离,决定最终向哪个方向移动,移动多远
x_step = x_dirextion * x_dirtance
y_dirextion = choice([1, -1])
y_dirtance = choice([0, 1, 2, 3, 4])
y_step = y_dirextion * y_dirtance
# 判断是否原地踏步
if x_step == 0 and y_step == 0:
continue
# 计算下一个点的x值和y值,这里为-1是列表中末尾的值
x = self.x_values[-1] + x_step
y = self.y_values[-1] + y_step
self.x_values.append(x)
self.y_values.append(y)
随机漫步也是绘图的一种,上面我们建了一个类,创建了两个方法,给定默认值点数5000个点,并初始化x轴与y轴的属性,存在一个列表中,后面又创建了一个方法,用于实先随机漫步,给定漫步的长度大小,并且计算它的总长度。最后计算值,因为是用append添加的,所以要用最后一个值与总距离相加。
while len(self.x_values) < self.num_numbers,这里也可以判断y轴的长度。
#多次随机漫步
while True:
# 增加点数,直接创建一个实例即可
redd = Rondon(50000)
redd.file_worlk()
plt.style.use('classic')
# 调整适合屏幕的尺寸,这里是指定一个元组,单位为英寸,dpi为像素,设置分辨率,可以有效的利用电脑屏幕空间
flg, ax = plt.subplots(figsize=(15,9),dpi = 120)
# 颜色渐变,着点给色
numbers = range(redd.num_numbers)
# edgecolors='none'去除周围轮廓
ax.scatter(redd.x_values,redd.y_values,c=numbers,cmap=plt.cm.Blues,edgecolors='none',s=5)
# ax.scatter(redd.x_values, redd.y_values, s=15)
# 突出起点终点
ax.scatter(0,0,c='green',edgecolors='none',s=100)#起点
ax.scatter(redd.x_values[-1],redd.y_values[-1],c='red',edgecolors='none',s=100)#终点
# 隐藏坐标轴
ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)
# 显示图形界面
plt.show()
running = input("请输入yes/no\n")
if running == 'no':
break
这里我们用到了真循环,用于后面的判断,可以在不重复运行的情况下且满足我们的判断的,可以无限生成漫步图。也可以不要!真循环内里面放了一系列的参数配置,用于设定漫步图的颜色大小,注意看我的注释,一步步看,就明白了!