【发布时间】:2016-05-22 14:40:59
【问题描述】:
我有这段代码:(我在stackoverflow的某个地方找到了,只是用它来说明我的想法。)
x<-runif(20)
y<-runif(20)
z<-runif(20, -5,5)
library(rgl)
plot3d(x,y,z)
fit <- lm(z ~ poly(x,2) +poly(y,2) + x:y )
xnew <- seq(min(x), max(x), len=20)
ynew <- seq(min(y), max(y), len=20)
df <- expand.grid(x = xnew,
y = ynew)
df$z <- predict(fit, newdata=df)
surface3d(xnew, ynew, df$z, col="red")
我的问题是,如何使颜色成为零以上的绿色渐变和零以下的红色渐变?我说清楚了吗?
我发现了这个帖子:Formatting of persp3d plot
这有助于进行渐变,但我无法弄清楚如何使其依赖于 z 的正/负值,以及如何将其分别限制为绿色和红色。
感谢您的帮助!
编辑:
我尝试在下面做一些事情,添加以下内容:
colors<-rep("red", length(df$z))
colors[(df$z > 0)] <- colorRampPalette(c("yellow","green"))(sum(df$z > 0))
colors[(df$z < 0)] <- colorRampPalette(c("red","yellow"))(sum(df$z < 0))
surface3d(xnew, ynew, df$z, col=colors)
这是由谁制作的:
看起来渐变沿着错误的轴。在 z = 0 附近它应该是黄色的,随着 z 变得更负,它变得更红,随着 z 变得更正,它变得更绿。但它并没有这样做,而是沿 y 轴应用渐变(看似)。
想法?
【问题讨论】: