Отформатируйте метки широты и долготы в ggplot
У меня есть карта ggplot, например:
library(ggmap)
ggmap(get_map())
Мне бы хотелось, чтобы метки оси были автоматически помечены как N-S / W-E: в приведенном выше случае, например, вместо lon -95.4 он должен показывать 95.4 ° E.
Я пытался связываться сscales
пакет и использованиеscale_x_continuous
а такжеscale_y_continuous
варианты ярлыков и разрывов, но мне не удалось заставить его работать.
Было бы здорово иметьscale_y_latitude
а такжеscale_x_longitude
.
РЕДАКТИРОВАТЬ: Благодаря ответу @Jaap я получил следующее:
scale_x_longitude <- function(xmin=-180, xmax=180, step=1, ...) {
ewbrks <- seq(xmin,xmax,step)
ewlbls <- unlist(lapply(ewbrks, function(x) ifelse(x < 0, paste(x, "W"), ifelse(x > 0, paste(x, "E"),x))))
return(scale_x_continuous("Longitude", breaks = ewbrks, labels = ewlbls, expand = c(0, 0), ...))
}
scale_y_latitude <- function(ymin=-90, ymax=90, step=0.5, ...) {
nsbrks <- seq(ymin,ymax,step)
nslbls <- unlist(lapply(nsbrks, function(x) ifelse(x < 0, paste(x, "S"), ifelse(x > 0, paste(x, "N"),x))))
return(scale_y_continuous("Latitude", breaks = nsbrks, labels = nslbls, expand = c(0, 0), ...))
}
Который работает довольно хорошо. Но по какой-то причине моему R не нравится символ степени перед кардинальной точкой ... Он отображается в виде простой точки, например долгота -24 становится24..W