【问题标题】:Reversing the colors in a persp3D plot in R在 R 中反转 persp3D 图中的颜色
【发布时间】:2026-01-01 02:15:01
【问题描述】:

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

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) 的东西,但它抱怨这一点。非常感谢任何帮助。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    您会发现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)
    

    【讨论】: