2015-11-06 4 views
1

Я пытаюсь создать тепловую карту в r с использованием fill.contour, и у меня есть dataframe, который выглядит примерно так, как показано ниже, но цвета переработаны, и они выглядят бесполезно. Что я делаю не так?Как прекратить рециркуляцию цветов

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) 
+1

'не может найти функцию«интерп»' – harre

ответ

0

Я принимаю предположение, что interp это из пакета: Акима. Ваш пример вряд ли минимален, так как для его выполнения требуется долгое время, поэтому я не разрешаю реставрацию без потери общности. Я думаю, что безопаснее использовать «уровни», а не «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)) 

enter image description here

Смежные вопросы