利用随机数函数,来绘制随机图表
一、生成所有点的x,y坐标值
1 from random import choice
2 import matplotlib.pyplot as plt
3 class RandomWalk():
4 def __init__(self,num_points=5000):
5 #设置随机点总数量,和初始点的x,y坐标值
6 self.num_points = num_points
7 self.x_values = [0]
8 self.y_values = [0]
9
10 def fill_walk(self):
11 #循环条件为小于随机点的总数量
12 while len(self.x_values) < self.num_points:
13 #设置点的方向和步长值,用方向值*步长值,得到点的x坐标值
14 x_direction = choice([1,-1])
15 x_distance = choice([0,1,2,3,4])
16 x_step = x_direction * x_distance
17 #设置点的方向和步长值,用方向值*步长值,得到点的x坐标值
18 y_direction = choice([1,-1])
19 y_distance = choice ([0,1,2,3,4])
20 y_step = y_direction * y_distance
21 #去掉(0,0)这样的坐标点
22 if x_step == 0 and y_step == 0:
23 continue
24 #下一个坐标的值为:坐标列表的最后一个值+新得到的坐标值
25 next_x = self.x_values[-1] + x_step
26 next_y = self.y_values[-1] + y_step
27 #把下一个坐标的值,加入到坐标列表中,作为最后一个值
28 self.x_values.append(next_x)
29 self.y_values.append(next_y)
30
二、调入上面的类中的x,y的坐标列表,进行编制图表
1 import matplotlib.pyplot as plt
2 from random_walk import RandomWalk
3
4 while True:
5
6 #重新设置随机点的总数量
7 rw= RandomWalk(100000)
8 #调用fill_walk函数,得到所有点的x,y坐标的值
9 rw.fill_walk()
10
11 #该函数用于设置输出图表窗口:
12 1、num:图表标题 2、figsize:窗口的长和高(英寸) 3、dpi:图像分辨率(默认80) 4、facecolor:窗口背景颜色 5、edgecolor:边框颜色 6、frameon:是否显示边框
13 plt.figure(num='X01', figsize=(10,6), dpi=100, facecolor='blue', edgecolor='red', frameon='False')
14
15 #用于设置渐变颜色的范围(取上面随机点的总数量)
16 point_numbers = list(range(rw.num_points))
17 plt.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,edgecolors='none',s=1)
18
19 #着重显示起点和终点的点
20 plt.scatter(0,0,c='green',edgecolors='none',s=100)
21 plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
22
23
24 #是否显示x,y坐标轴
25 plt.axes().get_xaxis().set_visible(False)
26 plt.axes().get_yaxis().set_visible(False)
27
28 plt.show()
29
30 keep_running = input("Make another walk? (y/n)")
31 if keep_running == 'n':
32 break