如何将多DataFrame的Matplotlib双轴折线图转为Plotly实现?
使用Plotly实现双轴折线图(替代Matplotlib版本)
以下是对应你提供的Matplotlib代码的Plotly实现,实现双轴折线图效果:df1对应实线,df2对应虚线,且使用右侧副轴。
import pandas as pd import plotly.graph_objects as go # 构建数据 dict1 = {'Date': ['2022-12-02', '2022-12-16', '2023-01-15'], 'Impressions': [20, 21, 19]} dict2 = {'Date': ['2022-08-02', '2022-09-16', '2023-02-20'], 'Impressions': [18, 51, 48]} df1 = pd.DataFrame(dict1) df2 = pd.DataFrame(dict2) # 转换日期格式 df1['Date'] = pd.to_datetime(df1['Date']) df2['Date'] = pd.to_datetime(df2['Date']) # 创建Plotly图表对象 fig = go.Figure() # 添加df1的实线折线(使用左侧主轴) fig.add_trace(go.Scatter( x=df1['Date'], y=df1['Impressions'], name='df1 Impressions', line=dict(shape='linear', dash='solid') # 设置实线 )) # 添加df2的虚线折线(使用右侧副轴) fig.add_trace(go.Scatter( x=df2['Date'], y=df2['Impressions'], name='df2 Impressions', line=dict(shape='linear', dash='dash'), # 设置虚线 yaxis='y2' )) # 配置双轴布局 fig.update_layout( yaxis=dict(title='df1 Impressions'), yaxis2=dict( title='df2 Impressions', overlaying='y', side='right' ), xaxis=dict(title='Date'), title='双轴折线图' ) # 显示图表 fig.show()
关键说明:
- 使用
go.Scatter分别创建两个折线轨迹,通过yaxis='y2'指定第二个轨迹使用右侧副轴 - 通过
line=dict(dash='solid')和line=dict(dash='dash')分别设置实线和虚线样式 update_layout中配置两个y轴的标题、位置,以及x轴标题,确保和原Matplotlib图表逻辑一致
内容的提问来源于stack exchange,提问作者Dushu
相关产品推荐
相关产品推荐

