python数据可视化学习之随机漫步

随机漫步

随机漫步是一个个随机的点行走得到的路径:每次行走都完全是随机的,没有明确的方向,结果是由一系列随机决策决定的路径

创建类 RandomWalk()

# radom_walk.py
# 代码所有:cxw
# 开发时间:2021/11/22 10:10

from random import choice


class RandonWalk():
    # 一个用于生成随机漫步数据的类
    def __init__(self, num=5000):
        self.num = num  # 存储随机漫步次数的变量
        # 所有随机漫步都初始为0
        self.x_value = [0]  # 每个点的x坐标
        self.y_value = [0]
        '''将所有可能的选择存储在一个列表中,并在每次做决定时使用choice()来决定使用哪种选择'''

    # 计算漫步包含的所有点,向左 右 还是上 下 走
    def fill_walk(self):
        # 决定前进方向以及沿着这个方向前进的距离
        while len(self.x_value) < self.num:
            x_direction = choice([1, -1])
            # x值要么选择向右走的1,要么选择向左走的-1
            x_distance = choice([0, 1, 2, 3, 4])
            # 然后选择0~4中的整数,沿这个方向走多远
            x_step = x_direction * x_distance
            '''如果x_step为正,向右移动,反之向左移动,为0垂直移动'''
            y_direction = choice([1, -1])
            y_distance = choice([0, 1, 2, 3, 4])
            y_step = y_direction * y_distance
            '''如果y_step为正,上,反之下'''
            # 如果x==0或者y==0就说明原地不动,跳出循环
            if x_step == 0 and y_step == 0:
                continue
                # 计算下一个点的x值和y值,获取漫步中下一个点的x和y值,将x_step中最后一个数和x_value中最后一个数相加
            next_x = self.x_value[-1] + x_step
            next_y = self.y_value[-1] + y_step
            # 添加到x值
            self.x_value.append(next_x)
            self.y_value.append(next_y)

绘制随机漫步图 scatter()绘制一系列点

# Random_walk.py
# 代码所有:cxw
# 开发时间:2021/11/22 12:49
from radom_walk import RandonWalk
from matplotlib import pyplot as plt

'''实例创建'''
# 创建实例
s = RandonWalk()
s.fill_walk()  # 调用方法,随机漫步
plt.scatter(s.x_value, s.y_value, s=15, c='red')
plt.title('Random walk', fontsize=24)
plt.xlabel('random_x', fontsize=14)
plt.ylabel("random_y", fontsize=14)
plt.tick_params(axis="both", which="major", labelsize=14)
plt.show()

模拟多次随机漫步

使用手动输入是否停止漫步,y/n

# 代码所有:cxw
# 开发时间:2021/11/22 12:49
from radom_walk import RandonWalk
from matplotlib import pyplot as plt

'''动态漫步,多次随机'''
while True:
    s = RandonWalk()
    s.fill_walk()  # 调用方法,随机漫步
    plt.scatter(s.x_value, s.y_value, s=15, c=s.y_value, cmap=plt.cm.Blues, edgecolors="none")
    '''c指定为y_value,沿着y轴向上的点越来越深,cmap指定颜色为蓝色,edgecolors指定轮廓颜色为无'''
    plt.title('Random walk', fontsize=24)
    plt.xlabel('random_x', fontsize=14)
    plt.ylabel("random_y", fontsize=14)
    plt.tick_params(axis="both", which="major", labelsize=14)
    plt.show()
    jump_random_walk = input("请输入y继续漫步,n结束漫步")
    if jump_random_walk == 'n':
        break

采用颜色映射反映点的随机性

使用颜色映射来指定随机漫步中的随机性,传递参数c,指定为y_value,这样沿着y轴向上的点越来越深.cmap指定颜色为蓝色,edgecolors指定轮廓颜色为无

plt.scatter(s.x_value, s.y_value, s=15, c=s.y_value, cmap=plt.cm.Blues, edgecolors="none")
'''c指定为y_value,沿着y轴向上的点越来越深,cmap指定颜色为蓝色,edgecolors指定轮廓颜色为无'''

分割

或者将c传递为一个包含随机漫步次数num的列表,按照点的先后产生顺序来实现颜色映射,表示随机性

list_num = [range(self.num)]
plt.scatter(s.x_value, s.y_value, s=15, c=list_num, cmap=plt.cm.Blues, edgecolors="none")

重新绘制起终点 突出位置

起点绘制成绿色,重点绘制成红色

# 重新绘制起点和终点
plt.scatter(0, 0, s=100, c='green', edgecolors="none")
plt.scatter(s.x_value[-1], s.y_value[-1], c="red", edgecolors="none", s=100)
# s.x_value[-1]表示x的最后一个点,y_value同理

生成图片如下:
随机漫步

隐藏坐标轴

使用plt.axis(‘off’)或plt.xticks([])
plt.yticks([])隐藏坐标轴,使随机漫步更清晰明确

 '''隐藏坐标轴'''
'''两种方法 plt.axis('off') 或 plt.xticks([])
plt.yticks([])'''
# plt.axis('off')
plt.xticks([])
plt.yticks([])

随机漫步

指定matplotlib绘图的窗口

figure()函数指定matplotlib绘制图表的大小,figsize传递一个元组,指定宽度和高度 dpi指定分辨率

# 设置绘图窗口的尺寸
plt.figure(figsize=(10, 6), dpi=108)  # figure()用于指定图表的宽度、高度、分辨率和背景色,指定一个元组,指出绘制的尺寸,英寸,dpi指定分辨率

通过随机漫步模仿布朗运动

将其中的plt.scatter()替换为plt.plot()。为模拟花粉在水滴表面的运动路径,向plt.plot()传递rw.x_values和rw.y_values,并指定实参值linewidth。使用5000个点而不是50000个点。

# 代码所有:cxw
# 开发时间:2021/11/23 22:00

from radom_walk import RandonWalk
from matplotlib import pyplot as plt

bl = RandonWalk()
bl.fill_walk()
plt.plot(bl.x_value, bl.y_value, linewidth=14)
'''设置坐标轴的标注'''
plt.title('BuLangyundong', fontsize=24)
plt.xlabel('random_x', fontsize=14)
plt.ylabel("random_y", fontsize=14)
plt.tick_params(axis="both", which="major", labelsize=14)
plt.show()

生成图片如下:
布朗运动

学习内容:

python数据化学习之随机漫步

1、创建类 RandomWalk()
2、 绘制随机漫步图 scatter()绘制一系列点
3、 模拟多次随机漫步
4、 采用颜色映射反映点的随机性
5、 重新绘制起终点 突出位置
6、隐藏坐标轴
7、通过随机漫步模仿布朗运动


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值