如何使用seaborn绘制多折线Lineplot,x轴为日期并排除非日期列
实现方法
你可以按照「筛选日期列→转换为长表格式→绘图」的步骤实现需求,具体代码如下:
1. 筛选日期列
两种通用方式可选:
- 若确定
another_var固定为最后一列,直接切片排除即可:
date_cols = df.columns[:-1]
- 若非日期列位置不固定,可通过日期格式正则匹配筛选:
import re date_cols = [col for col in df.columns if re.match(r'\d{1,2}/\d{1,2}/\d{2}', col)]
2. 转换为seaborn适配的长表格式
seaborn的lineplot默认需要长格式数据,同时需要把索引列location转为普通列:
import pandas as pd # 重置索引将location转为普通列,再做宽转长 df_long = df.reset_index().melt( id_vars = 'location', value_vars = date_cols, var_name = 'date', value_name = 'count' ) # 可选:将日期列转为时间类型,优化x轴显示排序 df_long['date'] = pd.to_datetime(df_long['date'])
3. 绘制折线图
import seaborn as sns import matplotlib.pyplot as plt sns.lineplot( data = df_long, x = 'date', y = 'count', hue = 'location' # 按location自动分组生成A、B、C三条折线 ) plt.show()
内容的提问来源于stack exchange,提问作者user17208614
相关产品推荐
相关产品推荐

