首页 > 解决方案 > 在 R 中反转 persp3D 图中的颜色

问题描述

我正在使用包中的persp3D()函数,但无法反转颜色。目前,使用使颜色在其低处为红色,在表面高处为白色/黄色。我想有相反的情况。原因是当我使用该功能时,颜色就是这样出来的(即红色低,黄色高)。这是一个例子。GARheat.colorsimage()

library(GA)

y <- x <- seq(-10, 10, length=60)
f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)

image(x, y, z)

persp3D(x, y, z, col.palette = heat.colors, phi = 30, theta = 225,
        box = TRUE, border = NA, shade = .4)

在此处输入图像描述

在此处输入图像描述

我会考虑使用类似的东西,col.palette = rev(heat.colors)但它抱怨这一点。任何帮助是极大的赞赏。

标签: rplot

解决方案


你会发现那heat.colors是一个有参数的函数rev

args(heat.colors)
function (n, alpha, rev = FALSE) 
NULL

更改默认值的一种简单方法是定义自己的heat.colors. 我们可以花费大量精力查看源代码persp3D并找出确切heat.colors的调用方式,或者我们可以只使用它...来传递任何其他参数。我更喜欢懒惰的方式:

my.heat.colors <- function(...) heat.colors(..., rev=TRUE)

现在很容易:

persp3D(x, y, z, col.palette = my.heat.colors, phi = 30, theta = 225,
        box = TRUE, border = NA, shade = .4)

在此处输入图像描述


推荐阅读