我是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/

10-12 19:16