【问题标题】:How to stop colours recycling如何停止颜色回收
【发布时间】:2015-11-06 16:23:30
【问题描述】:

我正在尝试使用 fill.contour 在 r 中创建热图,并且我有一个看起来有点像下面的数据框,但是颜色被回收了,使它变得毫无用处。我做错了什么?

x <- c(seq(15, 75, by = 5))
y <- rep(c(100,200,300,400,500, 600, 700, 800),each=length(x))
z <- sample(0:34, length(y), replace=TRUE)
z <- z/10000

d <- data.frame(x, y, z)


resolution <- 0.1

a <- interp(x=d$x, y=d$y, z=d$z, 
        xo=seq(min(d$x),max(d$x),by=resolution), 
        yo=seq(min(d$y),max(d$y),by=resolution),
        duplicate="mean")

MyHeatMapColours <-colorRampPalette(c("red","yellow","springgreen","royalblue"))(50)

filled.contour(a, col = MyHeatMapColours, nlevels = 49)

【问题讨论】:

  • could not find function "interp"

标签: r


【解决方案1】:

我猜测 interp 来自 package:akima。你的例子几乎不是最小的,因为它需要很长时间才能运行,所以我在不失一般性的情况下减少了分辨率。我认为使用“levels”而不是“nlevels”更安全,尽管我无法告诉你为什么会这样:

library(akima)   # which does have an `interp`-function
x <- c(seq(15, 75, by = 5))
y <- rep(c(100,200,300,400,500, 600, 700, 800),each=length(x))
z <- sample(0:34, length(y), replace=TRUE)
z <- z/10000

d <- data.frame(x, y, z)
resolution <- 0.5

a <- interp(x=d$x, y=d$y, z=d$z, 
        xo=seq(min(d$x),max(d$x),by=resolution), 
        yo=seq(min(d$y),max(d$y),by=resolution),
        duplicate="mean")

MyHeatMapColours <-colorRampPalette(c("red","yellow","springgreen","royalblue"))(49) 
#colors are supposed to be one less than length of levels.

filled.contour(a, col = MyHeatMapColours, 
               levels = seq(min(z),max(z), length=50))

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多