Python 笔记 :21 matplotlib 绘制图表3(绘制随机图)
利用随机数函数,来绘制随机图表
一、生成所有点的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