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

