【问题标题】:Wireframe: Legend colors with multiple surfaces and transparency线框:具有多个表面和透明度的图例颜色
【发布时间】:2012-12-15 13:08:47
【问题描述】:

以下代码使用 lattice 的线框功能绘制 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")),
          )

结果:

谢谢!

【问题讨论】:

    标签: r graphics lattice wireframe


    【解决方案1】:

    要更改线条的颜色,您应该将 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")),
    )
    

    【讨论】:

      【解决方案2】:

      参见 ?simpleTheme ,用于透明部分

          par.settings =  simpleTheme(alpha = 0.7)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-17
        • 2011-01-08
        • 2012-12-17
        • 2020-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多