Plotly.express 的 scatter() 绘制随机游走图

部署运行你感兴趣的模型镜像

 一、Plotly 库简介

        Plotly 是一个基于 Web 技术的 ​交互式可视化库,支持 Python、R、JavaScript 等多种语言,其 Python 版本以简洁的 API 和丰富的图表类型著称。核心优势包括:

        下面是结合数据生成、交互式绘图和高级定制技巧(散点图),提供两种实现方式(基础版和动画版):

二、随机游走数据生成

随机游走路径通过累计随机步长生成。以下是高效的数据生成代码:

import numpy as np
import pandas as pd

def generate_random_walk(steps=1000, start_point=(0, 0)):
    """生成二维随机游走路径"""
    directions = np.random.choice([-1, 1], size=(2, steps))  # 步长方向矩阵
    steps_matrix = np.cumsum(directions, axis=1)  # 累计步长
    x = np.concatenate([[start_point[0]], steps_matrix[0] + start_point[0]])
    y = np.concatenate([[start_point[1]], steps_matrix[1] + start_point[1]])
    return pd.DataFrame({'Step': range(len(x)), 'X': x, 'Y': y})

# 生成数据(1000步)
df = generate_random_walk(steps=1000)

​三、基础散点图绘制

用 px.scatter() 绘制静态随机游走路径,通过颜色渐变显示移动方向:

import plotly.express as px

fig = px.scatter(
    data_frame=df,
    x='X', 
    y='Y',
    color='Step',  # 用渐变色表示时间顺序
    color_continuous_scale='Bluered',  # 蓝→红渐变
    title='2D Random Walk Path',
    labels={'X': 'X Position', 'Y': 'Y Position'},
    width=800,
    height=600
)

# 标记起点和终点
fig.add_scatter(
    x=[df['X'].iloc[0], df['X'].iloc[-1]],
    y=[df['Y'].iloc[0], df['Y'].iloc[-1]],
    mode='markers',
    marker=dict(color=['green', 'red'], size=12),
    name='Start/End'
)

fig.show()

效果特点​:

        路径点颜色从蓝(起点)过渡到红(终点)

        起点(绿色)和终点(红色)高亮标记

        支持缩放、拖拽、悬停查看坐标

四、进阶:动态轨迹动画

通过 animation_frame 参数实现路径绘制动画:

# 为动画添加帧序号(每50步一帧)
df['Frame'] = df.index // 50  

fig = px.scatter(
    data_frame=df,
    x='X',
    y='Y',
    animation_frame='Frame',  # 动画帧控制
    range_x=[df['X'].min()-10, df['X'].max()+10],
    range_y=[df['Y'].min()-10, df['Y'].max()+10],
    title='Animated Random Walk',
    width=800,
    height=600
)

# 调整动画速度(每帧500毫秒)
fig.layout.updatemenus[0].buttons[0].args[1]['frame']['duration'] = 500
fig.show()

动态交互​:

        播放按钮控制路径绘制过程

        自动显示当前绘制进度

五、高级定制技巧

添加路径连线

fig = px.line(
    df, x='X', y='Y', 
    title='Random Walk with Path Line'
)
fig.add_scatter(
    x=df['X'], y=df['Y'], 
    mode='markers', 
    marker=dict(size=4, color='blue')
)

​六、对比Matplotlib静态方案

特性

Plotly Express

Matplotlib

交互性

✅ 缩放/悬停/动画

❌ 静态图片

代码简洁度

平均5行核心代码

需10+行配置细节

动态效果

原生支持动画参数

需复杂Animation对象

多路径管理

自动分组配色

手动循环绘制

适用场景

网页嵌入/交互分析

论文出版/静态报

七、注意事项

  1. 大数据优化​:路径点超过10万时,添加 render_mode='webgl' 启用GPU加速

  2. 起点设置​:若需固定起点,在 generate_random_walk() 中修改 start_point 参数

  3. 方向控制​:调整 np.random.choice([-1, 0, 1]) 可增加停留概率

官方API说明:  https://plot.ly/python-api-reference/plotly.express.html

官方绘图教程: https://plot.ly/python/plotly-express/

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值