抄写一个用python生成随机数据并用matplotlib绘制出散点图的程序---随机漫步

本文介绍了如何使用Python编程中的RandomWalk类来模拟随机漫步,并通过Matplotlib库将漫步轨迹可视化。随机漫步的起点为绿色,终点为红色,颜色随漫步次数加深。用户可以持续生成新的随机漫步并显示结果。
摘要由CSDN通过智能技术生成

起始点颜色为绿色,终点为红色,随着漫步数增多颜色渐变加深,

抄写来自《python编程从入门到实践》

1、为模拟随机漫步,创建一个RandomWalk的类, 它随机选择前进方向,这个类有三个属性,一个存储随机漫步次数的变量,另外两个存储随机漫步经过的每个点的x,y坐标。

这个类还包含两个方法:__init__()和fill_walk(),后者计算随机漫步经过的所有点。

from random import choice

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值,
            x = self.x_values[-1] + x_step
            y = self.y_values[-1] + y_step

            self.x_values.append(x)
            self.y_values.append(y)
            

2、绘制随机漫步图

import matplotlib.pyplot as plt 

from random_walk import RandomWalk

#只要程序处于活动状态,就不断第模拟随机漫步,
while True:
    rw = RandomWalk(50000)
    rw.fill_walk()

    #将所有点绘制出来,
    plt.style.use('classic')
    #fig , ax = plt.subplots(figsize=(15,9))     #指定图形尺寸,单位是英寸,
    fig , ax = plt.subplots(figsize=(10,6),dpi=128)
    point_numbers = range(rw.num_points)
    ax.scatter(rw.x_values,rw.y_values,c=point_numbers,cmap=plt.cm.Blues,
        edgecolors='none',s=15)

    #突出起点和终点
    ax.scatter(0,0,c='green',edgecolors='none',s=100)
    ax.scatter(rw.x_values[-1],rw.y_values[-1],c='red',edgecolors='none',s=100)
   # ax.scatter(rw.x_values,rw.y_values,s=15)

   #隐藏坐标轴
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    plt.show()

    #运行一次完成后,如果输入y,再次循环,如果输入n就结束程序,
    #(要把运行图关闭plt.show()才算结束,如果你输入的不是n,那就还会继续循环,)
    keep_running = input("需要绘制另一个随机漫步吗?(y/n):")
    if keep_running == 'n':
        break



 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值