如何在Plots中为主坐标轴显示网格,不为twinx副坐标轴显示?
修复Plots双y轴网格消失问题
问题核心:给twinx副轴设置全局grid=false时,会覆盖主轴的grid=true配置,导致所有y网格被关闭。解决思路是仅关闭副轴的y网格,而非全局关闭所有网格,或手动恢复主轴的y网格状态。
修复方案一:单独控制副轴y网格
修改副轴配置,用ygrid=false替代grid=false,仅关闭副轴的y网格,主轴y网格不受影响:
using Plots # 生成数据 x = 1:10 y1 = rand(10) y2 = rand(10) .* 100 # 让y2处于不同刻度范围 # 绘制主图并开启网格 plot(x, y1, color=:blue, label="y1", yticks=[0.2, 0.4, 0.6, 0.8], grid=true) # 添加双y轴副图,仅关闭自身y网格 plot!(twinx(), x, y2, color=:red, label="y2", yticks=true, ygrid=false, legend=:topleft)
修复方案二:手动恢复主轴y网格
如果必须使用grid=false,可在添加副轴后手动重新开启主图的y网格:
using Plots x = 1:10 y1 = rand(10) y2 = rand(10) .* 100 # 先创建主图并保存对象 p = plot(x, y1, color=:blue, label="y1", yticks=[0.2, 0.4, 0.6, 0.8], grid=true) # 添加双y轴副图并关闭全局网格 plot!(twinx(), x, y2, color=:red, label="y2", yticks=true, grid=false, legend=:topleft) # 手动恢复主图的y网格 plot!(p, ygrid=true)
原理说明
Plots.jl中,全局grid参数会作用于整个绘图的所有轴;而ygrid参数可单独控制对应轴的y方向网格显示状态,以此精确区分主副轴的网格配置。
内容的提问来源于stack exchange,提问作者Hugo Trentesaux
相关产品推荐
相关产品推荐

