zoukankan      html  css  js  c++  java
  • matplotlib之随机漫步

     1 # 随机漫步类
     2 from random import choice
     3 from matplotlib import pyplot as plt
     4 from pylab import mpl
     5 from matplotlib import rcParams
     6 
     7 
     8 class RandomWalk():
     9     '''生成随机漫步的类'''
    10 
    11     def __init__(self, total_num=15000):
    12         self.total_num = total_num
    13         '''初始坐标(0,0)'''
    14         self.x_values = [0]
    15         self.y_values = [0]
    16 
    17     def get_step(self):
    18         '''随机生成移动的方向和距离'''
    19         diretion = choice([1, -1])
    20         distance = choice([0, 1, 2, 3, 4, 5])
    21         return diretion * distance
    22 
    23     def fill_walk(self):
    24         '''计算随机漫步中所有的点'''
    25         while len(self.x_values) < self.total_num:
    26             '''计算前进方向和距离'''
    27             x_step = self.get_step()
    28             y_step = self.get_step()
    29 
    30 
    31             '''拒绝原地踏步'''
    32             if x_step == 0 and y_step == 0:
    33                 continue
    34 
    35             '''计算下一个点的x和y的值'''
    36             next_x = self.x_values[-1] + x_step
    37             next_y = self.y_values[-1] + y_step
    38 
    39             self.x_values.append(next_x)
    40             self.y_values.append(next_y)
    41 
    42 
    43 # 设置默认字体,解决中文显示乱码问题
    44 mpl.rcParams['font.sans-serif'] = ['SimHei']
    45 # 解决负号'-'显示为方块的问题
    46 rcParams['axes.unicode_minus'] = False
    47 
    48 # 随机漫步实例
    49 rw = RandomWalk()
    50 rw.fill_walk()
    51 point_nunbers = list(range(rw.total_num))
    52 
    53 # 调整绘图窗口尺寸,单位为英寸
    54 plt.figure(figsize=(8, 6))
    55 
    56 # 给点着色显示
    57 plt.scatter(rw.x_values, rw.y_values, c=point_nunbers, cmap=plt.cm.Blues, s=1)
    58 plt.title("随机漫步图", fontsize=18)
    59 
    60 # 突出起点和终点
    61 plt.scatter(0, 0, c='green', s=30)
    62 plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', s=20)
    63 
    64 # 隐藏坐标轴
    65 # plt.axes().get_xaxis().set_visible(False)
    66 # plt.axes().get_yaxis().set_visible(False)
    67 
    68 plt.show()

    运行截图:

  • 相关阅读:
    systemctl
    防火墙firewalld
    k8s 基础概念
    进程
    模板问题
    自动发现
    oracle操作
    aix 10代oracle zabbix2.4.4 日志监控
    paramiko
    test
  • 原文地址:https://www.cnblogs.com/gongxr/p/7351563.html
Copyright © 2011-2022 走看看