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

Plotly实现主坐标轴线性、次坐标轴对数刻度绘图咨询

如何用Plotly实现主坐标轴线性、次坐标轴对数的双轴图

你想要实现的双轴图需求完全可行,不过你在设置次坐标轴对数刻度的语法上有点小问题——fig.update_layout() 并不是设置坐标轴类型的正确方式,我们需要用 update_yaxes() 来分别指定主次坐标轴的刻度规则。

修正后的完整代码

import pandas as pd
from plotly.subplots import make_subplots
import plotly.graph_objects as go

# 创建示例数据集
df = pd.DataFrame({'x': [0,1,2,3,4], 'y1' : [2,4,6,8,10], 'y2': [5,10,20,30,35]})

# 创建带次坐标轴的子图
fig = make_subplots(specs=[[{"secondary_y": True}]])

# 添加主坐标轴的trace(线性刻度)
fig.add_trace(
    go.Scatter(x=df["x"], y=df["y1"], name='线性刻度轴'),
    secondary_y=False
)

# 添加次坐标轴的trace(对数刻度)
fig.add_trace(
    go.Scatter(x=df["x"], y=df["y2"], name='对数刻度轴'),
    secondary_y=True,
)

# 分别设置主次坐标轴的刻度类型
fig.update_yaxes(type="linear", secondary_y=False, title_text="主坐标轴(线性)")
fig.update_yaxes(type="log", secondary_y=True, title_text="次坐标轴(对数)")

# 添加上下文标题
fig.update_layout(
    title_text="主轴线性、次轴对数的双轴折线图",
    xaxis_title="X轴"
)

fig.show()

关键说明

  • 设置坐标轴类型:通过 update_yaxes() 并配合 secondary_y 参数,我们可以精准控制主/次坐标轴的刻度类型:
    • secondary_y=False 对应主坐标轴,设置 type="linear" 保持线性刻度
    • secondary_y=True 对应次坐标轴,设置 type="log" 启用对数刻度
  • 可读性优化:给两个坐标轴添加标题、给图表加总标题,能让可视化结果更清晰直观
  • trace关联:添加每个trace时,通过 secondary_y 参数指定它属于哪个坐标轴,确保数据和轴的对应关系正确

这样运行代码后,你就能得到主轴显示y1线性数据、次轴显示y2对数数据的双轴图了。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 12:58:12