2016-08-24 203 views
2

我真的很新的R,我想创建一个像我这里添加的图像,但我需要从0到1的颜色范围,现在它自动设置,在图像中是从0.2到0.6。 这里是我的R代码里面,我用: Mat.csv是一个二维矩阵与值[0,1]设置颜色范围在persp3d在R

library(plot3D) 
mydata <- read.csv("D:/output/Mat.csv") 
mydata <- as.matrix(mydata) 
pdf("D:/output/surfaceplot.pdf") 
mycols <- colorRampPalette(c("#ff0000", "#00ff00")) 
persp3D(z = mydata, theta = 120, zlim=c(0,1)) 
dev.off() 

Example Graph

回答

0

论证clim将解决你的问题。 (persp3Dplot3D程序包的功能,但persp3drgl程序包的功能。注意)colorRampPalette返回function,它插入一组给定颜色以创建新函数的参数颜色数。因此,您可以通过给出返回colorRampPalette返回的新function的输出来设置persp3D的颜色向量。例如,persp3D(..., col = mycols(256))mycolv <- mycols(256); persp3D(..., col = mycolv)

library(plot3D) 

## example data 
x <- seq(-pi, pi, by = 0.1) 
y <- seq(-pi, pi, by = 0.1) 
mydata <- outer(x, y, function(x, y) cos(x) * sin(y)) 
range(mydata) # about -1 ~ 1 

## colour function 
mycols <- colorRampPalette(c("blue", "red", "green", "yellow")) 

## draw 
persp3D(z = mydata, ticktype = "detailed", col = mycols(256))     # left 
persp3D(z = mydata, ticktype = "detailed", col = mycols(256), clim=c(-2, 2)) # right 

enter image description here

+0

非常感谢你! 正是我想要它,并很好地解释 – Fadi