美文网首页Python自学笔记
matplotlib实现随机漫步

matplotlib实现随机漫步

作者: 第六九书 | 来源:发表于2020-03-18 22:52 被阅读0次

    matplotlib实现随机漫步

    本人小白,自学Python,本部分内容是自学《Python编程 从入门到实践》的随手笔记。案例及代码均为教材中的案例。
    

    在自然界中,物理学、生物学、化学和经济领域,随机漫步都有其实际用途。例如,漂浮在水面上的花粉因不断受到水分子的作用而在水面上随机移动,水滴中的分子运动是随机的,因此花粉在水面上的运动犹如随机漫步,本例就是将随机漫步的结果以图表的形式呈献出来。

    思路:将随机漫步的坐标存入在两个坐标中,再用scatter()绘制出来。
    

    一、创建一个类,指定程序所需的变量及相互关系

    class RandomWalk():
       '''生成一个随机漫步数据的类'''
       
       def __init__(self,num_points=5000):
       '''初始化随机漫步的属性'''
       self.num_points = num_points
    
       # 所有随机漫步都始于(0,0)
       self.x_values = [0]
       self.y_values = [0]
    

    二、设置参数变量

       def fill_walk(self):
           '''计算随机漫步包含的所有点'''
    
           # 不断漫步,直到列表达到指定的长度
           while len(self.x_values) < self.num_points:
               # 决定前进方向以及沿这个方向前进的距离
               x_direction = choice([1,-1])
               x_distance = choice([0,1,2,3,4])
               x_step = x_direction * x_distance
    
               y_direction = choice([1,-1])
               y_distance = choice([0, 1, 2, 3, 4])
               y_step = y_direction * y_distance
    
               # 拒绝原地踏步
               if x_step == 0 and y_step == 0:
                   continue
    
               # 计算下一个点x值和y值
               next_x = self.x_values[-1] + x_step
               next_y = self.y_values[-1] + y_step
    
               self.x_values.append(next_x)
               self.y_values.append(next_y)
    

    此时引了choice()方法来决定漫步的方向和距离,需在开头进行声明。

    三、创建实例,并运行随机漫步。

    由于本工程引用了两个库,需在开头处进行声明:

    import matplotlib.pyplot as plt
    from  ramdom import choice
    .........
    example = RandomWalk()
    example.fill_walk()
    plt.figure(figsize=(12,8)) # 由于数值较多,设置画布大小,便于观察规律。
    plt.scatter(example.x_values,example.y_values,s=10)
    plt.show()
    

    效果如下图:


    随机漫步5000个点

    四、设置样式,美化图表

    (一)利用cmap给点着色

    利用cmap给点着色可以突出各个点的先后顺序,甚至可以看出随机漫步方向及经过,使简单的图表清晰地、可视化地表达部分信息。
    使用cmap参数,数值越小,颜色越浅,数值越大,颜色越深。

    1. 增设一个变量,用以统计点的个数,并用于后面的cmap使用。由于是逐个添加的,所以数值越大,越是最后绘制的点。point_numbers = list(range(rw.num_points))
    2. 在scatter()中增加cmap设置,即增加c=point_numbers,cmap=plt.cm.Blues。使用matplotlib中内置的Blues系列颜色。
    3. 最后的scatter()是这样的:plt.scatter(rw.x_values,rw.y_values,s=5,c=point_numbers,cmap=plt.cm.Blues)
    4. 绘制结果如下图:


      颜色映射后的随机漫步图

    可以看出基本的趋势如下图:


    基本走势示意图
    
    plt.figure(figsize=(12,8))
    plt.scatter(rw.x_values,rw.y_values,s=5,c=point_numbers,cmap=plt.cm.Blues)
    

    相关文章

      网友评论

        本文标题:matplotlib实现随机漫步

        本文链接:https://www.haomeiwen.com/subject/hudhyhtx.html