如何用pandas和plotly将多组不同时间轴的CSV测量数据绘制在同一图表
Plotly合并多数据集时序曲线解决方案
核心原理
Plotly Express生成的每一个图表对象都包含轨迹(data)属性,你可以通过add_trace方法将多个数据集的轨迹追加到同一张画布上,也可以先合并数据集后一次性绘图,两种方案都支持不同时间戳的数据集混用。
方案1:直接合并已有图表轨迹
适合已经单独生成了两个图表,需要快速合并的场景:
import pandas as pd import plotly.express as px # 读取数据时自动解析时间戳 ds1 = pd.read_csv('ds1.csv', parse_dates=['timestamp']) ds2 = pd.read_csv('ds2.csv', parse_dates=['timestamp']) # 生成基础画布 fig = px.line(ds1, x='timestamp', y='value', title='多设备温度测量曲线', labels={'value': '测量数值'}) # 追加第二个数据集的轨迹 fig.add_trace(px.line(ds2, x='timestamp', y='value').data[0]) # 自定义图例名称(可选) fig.data[0].name = 'Temp1' fig.data[1].name = 'Temp2' fig.update_layout(showlegend=True) fig.show()
方案2:合并数据集后一次性绘图
代码更简洁,自动生成分类图例,适合多数据集批量绘图场景:
import pandas as pd import plotly.express as px # 读取数据 ds1 = pd.read_csv('ds1.csv', parse_dates=['timestamp']) ds2 = pd.read_csv('ds2.csv', parse_dates=['timestamp']) # 给数据集加分类标识 ds1['设备类型'] = 'Temp1' ds2['设备类型'] = 'Temp2' # 纵向合并两个数据集 all_data = pd.concat([ds1, ds2], ignore_index=True) # 直接按分类字段绘制不同颜色的曲线 fig = px.line( all_data, x='timestamp', y='value', color='设备类型', title='多设备温度测量曲线', labels={'value': '测量数值'} ) fig.show()
注意事项
如果读取csv后时间戳未被正确识别为时间类型,可手动转换:
ds1['timestamp'] = pd.to_datetime(ds1['timestamp']) ds2['timestamp'] = pd.to_datetime(ds2['timestamp'])
内容的提问来源于stack exchange,提问作者Stefan Jaritz
相关产品推荐
相关产品推荐

