如何使用Plotly将两个CSV数据集的折线图合并到同一张图中
双DataFrame折线合并到同一Figure的实现方法
你原本的写法不支持直接传入多个DataFrame同时指定不同的x/y列,可通过以下两种方式实现需求:
- 方案1:使用Plotly Express追加轨迹
单独生成两个折线对象后,将第二个的轨迹追加到第一个Figure中即可,示例代码如下:
import pandas as pd import plotly.express as px # 原有数据读取逻辑保持不变 df = pd.read_csv("test.csv", sep='\t',skiprows=range(9),names=['A', 'B', 'C','D']) df2 = pd.read_csv("LoadMatch_Limit.csv",skiprows=range(1),names=['X','Y']) # 生成第一张折线图 fig = px.line(df, x='A', y='D', name='test数据集') # 追加第二条折线的轨迹 fig.add_trace(px.line(df2, x='X', y='Y', name='LoadMatch数据集').data[0]) # 可选:自定义图表样式 fig.update_layout( xaxis_title='公共x轴', yaxis_title='公共y轴', title='双数据集折线对比' ) fig.show()
- 方案2:使用Plotly Graph Objects实现
如果需要更灵活的样式自定义,可直接用底层的Graph Objects接口手动添加轨迹:
import pandas as pd import plotly.graph_objects as go # 原有数据读取逻辑保持不变 df = pd.read_csv("test.csv", sep='\t',skiprows=range(9),names=['A', 'B', 'C','D']) df2 = pd.read_csv("LoadMatch_Limit.csv",skiprows=range(1),names=['X','Y']) fig = go.Figure() # 添加第一条折线 fig.add_trace(go.Scatter( x=df['A'], y=df['D'], mode='lines', name='test数据集' )) # 添加第二条折线 fig.add_trace(go.Scatter( x=df2['X'], y=df2['Y'], mode='lines', name='LoadMatch数据集' )) # 自定义图表样式 fig.update_layout( xaxis_title='公共x轴', yaxis_title='公共y轴', title='双数据集折线对比' ) fig.show()
如果两个数据集的x轴取值范围差异较大,可配置双x轴分别展示,只需在添加第二条轨迹时指定xaxis='x2',再通过update_layout配置第二根x轴的位置、样式即可。
内容的提问来源于stack exchange,提问作者Don99
相关产品推荐
相关产品推荐

