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
相关产品推荐
相关产品推荐

