1

我们需要在 R 中绘制多个曲面,并一一调用相应的绘图命令(使用plot3D库;但同样适用于具有基本 R 绘图样式的任何其他环境)。每个表面都是由数据构建的,包含不同范围的数据。我们可以通过一些着色方案为每个表面着色,如下所示:

我们将一些假数据作为 XYZ 点:

out.trial<-read.csv(text="1, 1, 30
1, 2, 35
1, 3, 29
1, 4, 33
2, 1, 31
2, 2, 32
2, 3, 34
2, 4, 35
3, 1, 28
3, 2, 29
3, 3, 29.5
3, 4, 31
4, 1, 30
4, 2, 31
4, 3, 33
4, 4, 33",header=FALSE)

现在我们构建两个彩色“表面”作为散点图。第二个“表面”是通过将所有值移动 20 来产生的。

library("plot3D")
   scatter3D(out.trial$V1, out.trial$V2, -out.trial$V3, phi = 0, bty = "g",
 col = gg.col(100,alpha=0.8), pch = 18, ticktype="detailed", xlab = "lon",
 ylab ="lat", zlab = "depth",colvar=-out.trial$V3,zlim=c(-65,-25))
    
    scatter3D(out.trial$V1, out.trial$V2, -20-out.trial$V3, phi = 0, bty = 
"g", col = gg.col(100,alpha=0.8), pch = 18, 
colvar=-20-out.trial$V3,zlim=c(-65,-25), add=TRUE)
    
    plotdev()

具有两个彩色表面的 3D 图

但是,在绘图命令中调用的标准颜色键函数默认情况下从变量的最小/最大范围为每个表面分配颜色。因此,具有不同值范围的两个表面都以相同的方式着色。在上面的示例中,第一个表面(散点组)包含 28-35 范围内的值,第二个表面 - 48-55,它们都在从蓝色到栗色的调色板中着色。我需要为每个表面设置从 28 到 55 的配色方案(在这种情况下)。所以上面的点是黄色的,下面的点是蓝色的。如何修改指令colvar =以设置用于分配颜色的自定义范围?

4

1 回答 1

1

clim=解决方案是在所有绘图指令中使用该参数。接下来,我们需要禁止在除一个之外的所有绘图命令中显示颜色菜单。示例中要着色的值范围是 -55 到 -29,因此clim=c(-55,-29)

scatter3D(out.trial$V1, out.trial$V2, -out.trial$V3, phi = 0, bty = "g",
 col = gg.col(100,alpha=0.8), pch = 18, ticktype="detailed", xlab = "lon",
 ylab ="lat", zlab = "depth",colvar=-out.trial$V3,zlim=c(-65,-25),clim=c(-55,-29))

scatter3D(out.trial$V1, out.trial$V2, -20-out.trial$V3, phi = 0, bty = 
"g", col = gg.col(100,alpha=0.8), pch = 18, 
colvar=-20-out.trial$V3,zlim=c(-65,-25), add=TRUE, clim=c(-55,-29), colkey=FALSE)

具有 2 个表面和一种配色方案的绘图

于 2017-12-28T00:22:59.310 回答