我有以下 3d 图:
使用我的数据,我使用以下代码创建了它:
library(rugarch)
library(rgl)
library(fGarch)
fd <- as.data.frame(modelfit, which = 'density')
color <- rgb(85, 141, 85, maxColorValue=255)
x <- seq(-0.2, 0.2, length=100)
y <-c(1:2318)
f <- function(s, t) {
dged(s,mean=fd[t,'Mu'],sd=fd[t,'Sigma'],nu=fd[t,'Shape'])
}
z <- outer(x, y, f)
persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=color,
ticktype="detailed", xlab="", ylab="time", zlab="",axes=TRUE)
如何根据 z 值获得颜色?我查看了不同的解决方案,例如这个,但在这种情况下我无法根据 z 值创建颜色。根据此线程的解决方案如下:
nrz <- nrow(z)
ncz <- ncol(z)
jet.colors <- colorRampPalette( c("#ffcccc", "#cc0000") )
# Generate the desired number of colors from this palette
nbcol <- 100
color <- jet.colors(nbcol)
# Compute the z-value at the facet centres
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
# Recode facet z-values into color indices
facetcol <- cut(zfacet, nbcol)
persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=color[facetcol],
ticktype="detailed", xlab="", ylab="time", zlab="",axes=TRUE)
但这并没有给出好的结果,因为它没有给绘图适当着色。我想让我的表面的尖峰是红色的,低的值是蓝色的,有一个很好的平滑过渡,但是这种颜色的切片,所以取决于时间?因此,极大的尖峰应在其尖峰处用红色着色,在底部的值用绿色着色。我怎样才能得到这个?
编辑:我找到了一个解决我之前关于轴上日期的问题的解决方案,剩下的唯一问题是取决于 z 值的适当着色。