Hvplot多列筛选配置:时间序列图展示多城市并支持按产品筛选
hvplot多维度筛选时间序列图实现方法
你当前的代码用groupby='city'是把城市设为了筛选维度,因此单张图只能展示单个城市的数据,要实现同屏展示所有城市、产品作为筛选维度的效果,只需要两步:
把宽表结构的产品列转换为长表行维度
hvplot的groupby筛选器仅针对行维度生效,你目前Prod1-Prod4是横向排列的列,需要先用pandas的melt做结构转换:import pandas as pd import hvplot.pandas # 宽表转长表,保留日期、城市作为固定维度,产品字段转成行标签 df_long = df.melt( id_vars=["date", "city"], var_name="product", value_name="metric_value" )转换后的数据表结构如下:
date city product metric_value 01/07/2012 Limoges Prod1 24 02/07/2012 Lyon Prod1 39 03/07/2012 Paris Prod1 57 ... ... ... ... 调整绘图参数,把城市设为分线维度、产品设为筛选维度
用by参数指定按城市拆分折线(同屏展示所有城市数据),用groupby参数指定按产品生成筛选下拉框:df_long.hvplot( kind="line", x="date", y="metric_value", by="city", groupby="product", width=850, height=450, legend="top_right" )
最终效果说明
- 单张图默认展示首个产品维度下,3个城市的完整时间序列折线,不同城市自动分配不同颜色
- 图表侧边会自动生成产品筛选下拉框,切换选项即可查看对应产品下各城市的数据走势
- 如果后续新增产品列,不需要修改绘图代码,
melt会自动把非date/city的列纳入产品筛选维度
内容的提问来源于stack exchange,提问作者Camue
相关产品推荐
相关产品推荐

