簡體   English   中英

如何為三維散點圖中的變量指定色階?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM