R:使用 R 中的latticeExtra 云调整 3DBarplot 的颜色梯度

问题描述

我正在尝试更改 3d 条形图的颜色,以便颜色从绿色变为黄色、橙色、浅红色、红色、深红色。然而,每当我绘制它时,看起来颜色在绿色之后开始重复。有什么可以解决的吗?我得到的输出是:

enter image description here

我想要的输出是这样的: enter image description here

这是代码,我正在使用。它给了我第一张照片。那不是想要的。我希望颜色看起来像第二张图片中的样子。

library(latticeExtra)
myPalette <- colorRampPalette(rev(c("red2","tomato2","red4","orange","gold1","forestgreen")))(6)
k <- read.table(text = 'x y z
NotKnown   0 Critical
NotKnown   0 Substantial
NotKnown   0 Significant
NotKnown   0 Moderate
NotKnown   0 Negligible
NotLikely  2 Critical
NotLikely  5 Substantial
NotLikely  7 Significant
NotLikely  0 Moderate
NotLikely  0 Negligible
Reasonable 0 Critical
Reasonable 1 Substantial
Reasonable 9 Significant
Reasonable 1 Moderate
Reasonable 0 Negligible
Likely     0 Critical
Likely     0 Substantial
Likely     1 Significant
Likely     0 Moderate
Likely     0 Negligible
VeryLikely 0 Critical
VeryLikely 0 Substantial
VeryLikely 0 Significant
VeryLikely 0 Moderate
VeryLikely 0 Negligible',header=TRUE)

k$x <- factor(k$x,levels = c("VeryLikely","Likely","Reasonable","NotLikely","NotKnown"))
k$z <- factor(k$z,levels= c("Critical","Substantial","Significant","Moderate","Negligible"))

cloud(y~z+x,k,panel.3d.cloud=panel.3dbars,col.facet=myPalette,xbase=0.8,ybase=0.8,xlab= "Severity",ylab="Probability",zlab="Number of Risks",scales=list(arrows=FALSE,col=1),par.settings = list(axis.line = list(col = "transparent")))

解决方法

我想这就是你要找的

assign.color <- function(coordinate) {
  if (sum(coordinate) == 2)
    return("red4")
  
  if (sum(coordinate) == 3)
    return("red2")
  
  if (sum(coordinate) == 4)
    return("tomato2")
  
  if (sum(coordinate) == 5)
    return("orange")
  
  if (sum(coordinate) == 6)
    return("gold1")
  
  if (sum(coordinate) >= 7)
    return("forestgreen")
}

k$x.int <- as.integer(k$x)
k$z.int <- as.integer(k$z)

k$color <- apply(k,MARGIN = 1,FUN = function (row) {
                   return(assign.color(as.integer(c(row["x.int"],row["z.int"]))))
                 })

k$colorCode <- apply(k,FUN = function(row) {
                       return(colorRampPalette(row["color"])(6)[1])
                     })


cloud(y~z+x,k,panel.3d.cloud=panel.3dbars,col.facet=k$colorCode,xbase=0.8,ybase=0.8,xlab= "Severity",ylab="Probability",zlab="Number of Risks",scales=list(arrows=FALSE,col=1),par.settings = list(axis.line = list(col = "transparent")))

产生 enter image description here

关键是要了解函数 col.facet 中的参数 cloud 也接受一个 vector,该 User.annotate("selecting user names").select(:name) # SELECT "users"."name" FROM "users" /* selecting user names */ User.annotate("selecting","user","names").select(:name) # SELECT "users"."name" FROM "users" /* selecting */ /* user */ /* names */ 可以与您的数据点的数量一样长。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...