我是R语言的初学者,我的脚本需要一些帮助。
我设法在2D图上使用library(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)创建一个颜色渐变,而我对data $ conf中的值函数的渐变感兴趣。我需要连接,但是在哪里?
attach(data)
t1 <- c(data$conf)
jet.colors <- colorRampPalette(c("blue", "red"))
e <- plot3d(x, y, z, col=jet.colors(327))
如果您可以帮助我,那就太好了–或者,如果您知道任何可以做得更好的3D图/比例渐变包,也可以使用。
最佳答案
您使用colorRampPalette()
步入正轨,但实际上确实需要更多类似于colorRamp()
的东西'returns a function that maps values between 0 and 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)
关于r - 如何在3D散点图中将色标分配给变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10413678/