如何在xyplot(lattice包)中为colorbar图例添加标题?

4

我正在复制Deepayan Sarkar的Lattice图书中的第5.6图,但只使用一个面板。目前,我正在努力在色条顶部获得标题...

以下是一些可重现的代码。

x <- seq(1,20,.1)
y <- rnorm(length(x))
z <- seq(1,200,length.out=length(x))

cols <- rainbow(100)[cut(z,100,label=F)]

xyplot(y~x, aspect="iso", type=c("p","g"), col=1, pch=21,fill=cols,
   legend=list(right=
       list(fun = draw.colorkey,
            args=list(key=list(col = rainbow,at = do.breaks(range(z),100))))),
panel=function(x,y,...){
panel.xyplot(x,y,...)
}
)

有线索吗?谢谢。
A
1个回答

3

看起来draw.colorkey出于某种原因不尊重key=列表的title=属性。但是您可以指定自己的grob。在这里,我们使用grid中的packGrob来修改标准的colorkey grob。尝试这个:

library(grid)
my.legend <- packGrob(
    draw.colorkey(key=list(col = rainbow, at = do.breaks(range(z),100))), 
    textGrob("My title", x = 0, y = 0.5, just = c("left", "centre")), 
    height=unit(2, "lines"),side="top", dynamic=T)

xyplot(y~x, aspect="iso", type=c("p","g"), col=1, pch=21,fill=cols,
    legend=list(right=list(fun=my.legend)))

enter image description here


谢谢您的回答,但是如果“groups”不为空,它就无法工作。 - Sezen
1
@Sezen 这个答案是关于给颜色条图例添加标题的。在我的测试中,这部分仍然可以使用 groups=,只是颜色会根据组别而改变。通常情况下,groups= 用于为不同的组别更改颜色,因此我不确定在明确设置 fill= 颜色时该如何使用。 - MrFlick
@MrFlick 是的,你说得对,我一直在专注于通过另一个变量来着色点 :) 至少对于 pch = 21col 可能会被 groups 设置,而 fill 可能会被 z 值设置。当然,如果我们有很多点,这不会有太大的影响。没关系,再次感谢。 - Sezen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接