2012-12-31 20 views
4

以下代码使用网格的线框函数绘制3个彩色平面。但是,我不明白为什么图例不会通过设置颜色组而改变。我试图手动做,但我只是最终改变了文字颜色。顺便说一下,有没有人也知道如何使表面透明70%?线框:具有多个曲面和透明度的图例颜色

library(lattice) 
library(akima) 

SurfaceData <- data.frame(
       x=rep(seq(0,100,length.out=10),each=10,times=3), 
       y=rep(rep(seq(0,100,length.out=10),times=10),times=3), 
       z=c(rep(25,100),seq(30,70,length.out=100),seq(95,75,length.out=100)), 
       type=factor(rep(c("A","B","C"),each=100)) 
         ) 

wireframe(z~x*y,data=SurfaceData,group=type, 
      col.groups=c("red","green","blue"), 
      scales = list(arrows=FALSE, col="black",font=10), 
      xlab = list("Variable X",rot=30), 
      ylab = list("Variable Y",rot=-30), 
      zlab = list("Variable Z",rot=90), 
      zlim = c(0,100), 
      #auto.key=TRUE, 
      auto.key=list(text=c("A","B","C"),col=c("red","green","blue"),lines=TRUE), 
      par.settings = list(axis.line = list(col = "transparent")), 
     ) 

结果:

enter image description here

谢谢!

回答

6

要更改线条的颜色,您应该将auto.key替换为key,并提供文本和线条的值列表。

wireframe(z~x*y,data=SurfaceData,group=type, 
      col.groups=c("red","green","blue"), 
      scales = list(arrows=FALSE, col="black",font=10), 
      xlab = list("Variable X",rot=30), 
      ylab = list("Variable Y",rot=-30), 
      zlab = list("Variable Z",rot=90), 
      zlim = c(0,100), 
      key=list(text=list(c("A","B","C"),col=c("red","green","blue")), 
        lines=list(lty=c(1,1,1),col=c("red","green","blue"))), 
      par.settings = list(axis.line = list(col = "transparent")), 
) 

为了使颜色透明,你可以使用函数rgb()。在这里,我定义了包含透明颜色的新变量mycolors.trans和具有相同颜色但不透明的图例mycolors

mycolors.trans = rgb(c(255,0,0), 
       c(0,255,0), 
       c(0,0,255),alpha = 70,maxColorValue = 255) 

mycolors = rgb(c(255,0,0), 
        c(0,255,0), 
        c(0,0,255),maxColorValue = 255) 

wireframe(z~x*y,data=SurfaceData,group=type, 
      col.groups=mycolors.trans, 
      scales = list(arrows=FALSE, col="black",font=10), 
      xlab = list("Variable X",rot=30), 
      ylab = list("Variable Y",rot=-30), 
      zlab = list("Variable Z",rot=90), 
      zlim = c(0,100), 
      #auto.key=TRUE, 
      key=list(text=list(c("A","B","C"),col=mycolors), 
        lines=list(lty=c(1,1,1),col=mycolors)), 
      par.settings = list(axis.line = list(col = "transparent")), 
) 

enter image description here

1

看到了什么? simpleTheme,透明部分

par.settings = simpleTheme(alpha = 0.7)