plot3d() - 如何更改z轴表面颜色以加热地图颜色

时间:2018-04-28 17:35:04

标签: r rgl

Graph Plot

在上图中,表面在z轴上着色(如热图)。我正在使用plot3d()

plot3d(data$x, data$y, data$z, name = 'Plotly3D graph', type = 'l', axes=F)

我必须重复与图像中相同的颜色。通过使用上面的代码,我可以得到3D正方形,但我不知道在哪里设置z轴的颜色与图像相同。请帮我plot3D。如果需要完整代码,将在必要时发布。

以下是示例代码:

data1 <- read.csv(file.choose(),1)

# retrieve age column from csv file 
var1 <- data1$age

z1 <- rep(1, times=length(var1))

plot3d(var1, length(var1), z1, type="l", xaxt='n', yaxt='n', xlab="Jitter in 
ns", ylab="Counts", size=0.05,expand=0.75, col=color[zcol],
ticktype="detailed", zlab="")

1 个答案:

答案 0 :(得分:1)

这是一个版本,使用How do I generate a mapping from numbers to colors in R?的一个答案中的函数。

# A function based on Dave X's answer to the colour mapping question
map2color <- function(x, pal, limits = range(x)){
  pal[findInterval(x, seq(limits[1], limits[2], length.out = length(pal) + 1), 
                   all.inside=TRUE)]
}

persp3d(volcano, col = map2color(volcano, rainbow(100)))

生成此图像:

enter image description here

要生成实体边缘(&#34;窗帘&#34;在plot3D中),只需使用其最小值的额外行和列包围数据。例如,

m <- min(volcano)
volcano2 <- cbind(m, rbind(m, volcano, m), m)

要使边缘看起来平坦,您需要添加xy值,只是原始值之外的一小部分:

x <- c(0.9999, 1:nrow(volcano), nrow(volcano) + 0.0001)
y <- c(0.9999, 1:ncol(volcano), ncol(volcano) + 0.0001)
persp3d(x, y, volcano2, col = map2color(volcano2, heat.colors(100)))

我将调色板切换到heat.colors只是为了多种多样。

enter image description here