You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:32:47