我是R的初学者,需要我的脚本帮助。 我设法使用我的2D图上的库(ggplot2)生成比例颜色渐变,如下所示;
z <- c(data$conf)
d <- qplot(x, y, xlab="Dimension 1", ylab="Dimension 2", colour=z)
d
d + scale_colour_gradient(limits=c(0, 1), data=data$conf, low="blue", high="red"))
我现在正试图在3D绘图上重现这个渐变,我使用了scatterplot3d或plot3d。我相信colorRampPalette基于327行(1 ... 327)创建颜色渐变,而我对数据$ conf中的值函数的渐变感兴趣。我需要一个连接,但在哪里?
attach(data)
t1 <- c(data$conf)
jet.colors <- colorRampPalette(c("blue", "red"))
e <- plot3d(x, y, z, col=jet.colors(327))
如果你可以帮助我那将会很棒 - 或者如果你知道任何可以做得更好的3D绘图/比例渐变包,那么也很酷。
答案 0 :(得分:11)
您使用colorRampPalette()
走在正确的轨道上,但确实需要更像colorRamp()
的{{3}}。
更好的是功能 - 称之为myColorRamp()
- 类似于colorRamp()
,而是:(a)在min(values)
和max(values)
之间映射值; (b)将颜色作为7个字符的sRGB字符串(例如“#F60008”)返回,这是plot3d()
理解的格式。
library(rgl)
myColorRamp <- function(colors, values) {
v <- (values - min(values))/diff(range(values))
x <- colorRamp(colors)(v)
rgb(x[,1], x[,2], x[,3], maxColorValue = 255)
}
x <- sin((1:100)/10)
y <- cos((1:100)/10)
z <- seq(-20, 20, length.out=100)
cols <- myColorRamp(c("red", "blue"), z)
plot3d(x = x, y = y, z = z, col = cols)