use*_*966 9 3d gradient r colors ggplot2
我是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"))
Run Code Online (Sandbox Code Playgroud)
我现在正试图在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))
Run Code Online (Sandbox Code Playgroud)
如果你可以帮助我那将是很棒的 - 或者如果你知道任何3D绘图/比例梯度包可以做得更好,也很酷.
Jos*_*ien 11
你是在正确的轨道上colorRampPalette(),但真的需要更多的东西colorRamp(),它'返回一个映射0到1之间的值的函数'.
更好的是一个函数 - 调用它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)
Run Code Online (Sandbox Code Playgroud)
