在上图中,表面在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="")
答案 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)))
生成此图像:
要生成实体边缘(&#34;窗帘&#34;在plot3D中),只需使用其最小值的额外行和列包围数据。例如,
m <- min(volcano)
volcano2 <- cbind(m, rbind(m, volcano, m), m)
要使边缘看起来平坦,您需要添加x
和y
值,只是原始值之外的一小部分:
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
只是为了多种多样。