R решетка каркасная цветная - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать карту батиметрии региона вокруг Фарерских островов (только морское дно). Я использую решетку и функцию каркаса. Итак, я сделал:

depthfaroe <-  getNOAA.bathy(lon1 = -11, lon2= -2, lat1 = 60, lat2 = 63, resolution = 1) %>% 
  fortify()

depthfaroeNeg <- depthfaroe
depthfaroeNeg$z[which(depthfaroeNeg$z > 0)] <- 0 #I remove the detail on the land
depthfaroe <- as.bathy(depthfaroeNeg)

wireframe(unclass(depthfaroe), shade = T, aspect = c(0.6, 0.1),
          screen = list(z = 0, x = -20),
          par.settings = list(axis.line=list(col="transparent")),
          zoom = 1.5,
          par.box=list(col=NA),
          col.regions = colorRampPalette(c("blue", "pink"))(100)
)

Однако невозможно заставить работать настройку col.region. Кроме того, я хотел бы закрасить серым цветом область с глубиной 0. Итак, в основном два вопроса:

  1. почему не работает параметр col.region ( Определение цветов каркаса вручную , похоже, не работает)
  2. как сделать так, чтобы градиент цвета И для одного конкретного z имел специальный цвет (например, для z = 0)?

Большое спасибо заранее за совет

Charlotte

1 Ответ

0 голосов
/ 11 мая 2018

Благодаря пакету developper я нашел ответ:

ramp.fun <- colorRamp(c("darkblue", "cadetblue1", "burlywood4"))

custom.palette <- function(irr, ref, height, rampfun = ramp.fun)
{if(height != 1) {
  ## convert height to color using rampfun and map to HSV space
  h.hsv <- rgb2hsv(t(rampfun(height)))
  ## reduce 'V' (brightness): multiply by irradiance
  toReturn <- hsv(h = h.hsv["h",],
                  s = h.hsv["s",],
                  v = irr * h.hsv["v",])
} else {
  toReturn <- "grey"
}
  return(toReturn)

}

xlim <- c(-35, 10)
ylim <- c(55, 70)

m <- map_data("worldHires", xlim = xlim, ylim = ylim)

depth <-  getNOAA.bathy(lon1 = xlim[1], lon2= xlim[2], lat1 = ylim[2], lat2 = ylim[1], resolution = 2) %>% 
  fortify()

depthNeg <- depth
depthNeg$z[which(depthNeg$z > 0)] <- 0
depth <- as.bathy(depthNeg)

wireframe(unclass(depth), shade = T,
          aspect = c(0.6, 0.1),
          screen = list(z = 0, x = -20),
          par.settings = list(axis.line=list(col="transparent")),
          zoom = 1.5,
          par.box=list(col=NA),
          col='transparent',
          shade.colors.palette = custom.palette
)

Надеюсь, это поможет:)

ура!

Ч

...