J'ai une carte de ggplot, par exemple:étiquettes de latitude Format et axe de longitude en ggplot
library(ggmap)
ggmap(get_map())
Je voudrais les étiquettes d'axe à étiqueter automatiquement NS/WE: dans le cas ci-dessus, par exemple Au lieu de -95,4, il devrait montrer 95,4 ° E.
J'ai essayé de jouer avec le paquet scales
et en utilisant scale_x_continuous
et scale_y_continuous
étiquettes et options pauses, mais je ne l'ai pas réussi à le faire fonctionner. Il serait génial d'avoir un scale_y_latitude
et un scale_x_longitude
.
EDIT: Merci à la réponse de @Jaap je suis arrivé à ce qui suit:
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), ...))
}
Ce qui fonctionne assez bien. Mais pour une raison quelconque, mon R ne semble pas aimer le symbole du degré devant le point cardinal ... Il est affiché comme un simple point, par ex. la longitude -24 devient 24..W
La réponse est très bonne, merci, mais je ne la considère pas comme étant acceptée car je suis à la recherche d'une approche automatisée, comme lorsque vous faites 'la bibliothèque (échelles); p + scale_y_continuous (labels = percent) '(voir http://docs.ggplot2.org/current/scale_continuous.html) ... d'ailleurs, mon R ne semble pas aimer le symbole du degré dans" ° E ". .. il n'est pas rendu correctement pour une raison quelconque. Des idées? – AF7
@ AF7 Je pense avoir trouvé une solution pour le symbole des degrés. Voir la mise à jour. – Jaap
Merci, cela ressemble à une bonne solution. – AF7