地理数据可视化-主题河流图

河流图主要用于展示随时间变化的数据流或事件流。

它通过连续的带状图形来表示不同类别的数据流,河流的宽度与数据的大小成正比

特别适合于展示多个类别或数据流随时间的变化,尤其是当这些数据之间存在重叠或交互时。

欢迎关注本人微信公众号--交通数据探索师

import pandas as pd
import pyecharts.options as opts
from pyecharts.charts import ThemeRiver
import numpy as np
​
np.random.seed(1)
​
data = pd.DataFrame(
    {
        'time': pd.date_range('2024-01-01 00:00:00', '2024-01-01 23:00:00', freq='H'),
        'road1_flow': np.random.randint(1000, 2000, 24),  # 路段1每小时的流量
        'road2_flow': np.random.randint(800, 2200, 24),   # 路段2每小时的流量
        'road3_flow': np.random.randint(500, 2500, 24)    # 路段3每小时的流量
    }
)
​
# 不同类别的名称,即路段1、路段2、路段3
x_data = ['road1', 'road2', 'road3']
​
# 对上面的data转换下形式,因为该河流图需要传入特定形式的数据,可见下文
data = (
    data.
    melt(id_vars='time', var_name='road', value_name='flow').
    eval("road=road.str.split('_', expand=True)[0]").
    reindex(['time', 'flow', 'road'], axis=1).
    values.
    tolist()
)
​
(
    ThemeRiver()
    .add(
        series_name=x_data,  # 系列名称,即每个分类的名称
        data=data,           # 数据,有特定格式,参考上面
        singleaxis_opts=opts.SingleAxisOpts(
            pos_top="50", 
            pos_bottom="50", 
            type_="time"  # 指定轴的类型为时间轴
        ),
    )
    .set_global_opts(
        tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="line")
    )
    .render(r"theme_river.html")
)

该主题河流图需要传入特定格式的数据,给数据满足以下要求:

时间戳:表示数据点对应的时间,通常是一个日期字符串或者时间戳数值;:表示在特定时间的数据值,可以是数量、频率或其他度量;

类别:表示数据点属于哪个类别,用于区分不同的数据流。

示例数据如下,

可视化效果如下,输出的是html文件,截图如下,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煮雨小筑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值