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

R语言latticeExtra包双Y轴绘图key参数设置的图例不显示问题

问题原因

使用latticeExtra包的doubleYScale()合并双Y轴图形时,内嵌在单个xyplot()对象内的key图例配置会在图合并、边距重计算的过程中被覆盖,无法正常渲染,因此之前写在MS对象里的图例参数不会生效。

可行解决方案

将图例配置直接传入doubleYScale()函数中,不要绑定到单个子图对象。如果需要将图例放在绘图区域的右上角(图内),可以通过归一化坐标指定位置,修正后的可运行代码如下:

library(latticeExtra)

# 构建两个单轴图,不再单独在子图中设置key
MS <- xyplot(Tabla.Rosetta.dt[,14] ~ Tabla.Rosetta.dt[,1], Tabla.Rosetta.dt, 
             type='l', col="#9933CC", ylab = 'Meteoscore')
RSP <- xyplot(Tabla.Rosetta.dt[,2] ~ Tabla.Rosetta.dt[,1], Tabla.Rosetta.dt, 
              type='l', col="#FF9933", ylab = 'RSP frequency', xlab = 'Dates')

# 合并双Y轴时统一传入图例配置
doubleYScale(MS, RSP, add.ylab2 = TRUE, use.style=FALSE,
             key = list(
               # 归一化坐标:x=1对应绘图区最右侧,y=1对应绘图区最顶部,corner指定图例的锚点为自身右上角
               x = 0.98, y = 0.98, corner = c(1,1),
               lines = list(col=c("#9933CC","#FF9933"), lty=c(1,1), lwd=6),
               text = list(c("Meteoscore","RSP")),
               # 可选:添加半透明白色背景,避免图例遮挡曲线
               background = adjustcolor("white", alpha.f = 0.8),
               padding = 2
             ))

参数说明

  • 如果需要将图例放在绘图区域外的右侧边栏,只需将key里的x/y/corner配置替换为space = "right"即可
  • 坐标值0.98可以根据实际显示效果微调,数值越大越靠近绘图区边缘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:42:51