我可以在格式化格子键时使用if()吗?

时间:2013-11-20 16:00:34

标签: r lattice

我正在尝试在格子中制作图形,并且根据逻辑变量显示键。也就是说,只有在逻辑变量为真时才会出现(这将在R-shiny网站上显示,用户将指示他们是否需要密钥)。问题在于,我希望键出现在图表的右侧 - 而不是在绘图区域。

我可以使用key=并使用space="right"选项获取右侧的密钥,但没有明显的方法来打开和关闭密钥

或者我可以使用draw.key()功能并使用draw=选项打开和关闭键,但是键位于绘图区域而不是右侧。所以我想我会使用if()语句来触发key选项 - 但这不起作用。没有绘制任何键,逻辑语句被忽略。我怎样才能让它发挥作用?

可重复的例子:

library(lattice)

A<-rnorm(1:100)
B<-rnorm(1:100)
K<-TRUE

xyplot(A~B,
   if(K==TRUE) {
      key=list(lines=list(color="blue")), space="right") 
    },

    panel=function(x,y,...){
       panel.xyplot(x,y,...)
    }
)

编辑添加:在代码的其他部分,if语句用于触发键中出现的元素,这使我对此更加神秘。

1 个答案:

答案 0 :(得分:2)

您需要将if语句的值分配给key(在正确的范围内):

xyplot(A~B, key=
   if(K) {
      key=list(lines=list(color="blue"))
    },

    panel=function(x,y,...){
       panel.xyplot(x,y,...)
    }
)

(您可以删除内部key=