[英]How to assign color scale to a variable in a 3D scatter plot?
我是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繪圖/比例梯度包可以做得更好,也很酷。
你使用colorRampPalette()
在正確的軌道上,但確實需要更像colorRamp()
東西,它'返回一個映射0到1之間值的函數' 。
更好的是一個函數 - 稱之為myColorRamp()
- 它類似於colorRamp()
,而是:(a)映射min(values)
和max(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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.