Je souhaite ajouter une barre d'échelle et une flèche nord à l'extérieur de la placette d'une placette à facettes. À titre d'exemple, considérons le tracé de la carte facettée suivante, comme on le voit dans un billet de blog par Max Marchi (link):Ajouter une barre d'échelle et une flèche nord à l'extérieur de la zone de tracé d'une placette à carte à facettes
# Load the data
airports <- read.csv("https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat", header = FALSE)
colnames(airports) <- c("ID", "name", "city",
"country", "IATA_FAA", "ICAO", "lat", "lon",
"altitude", "timezone", "DST")
routes <- read.csv("https://github.com/jpatokal/openflights/raw/master/data/routes.dat", header = FALSE)
colnames(routes) <- c("airline", "airlineID",
"sourceAirport", "sourceAirportID",
"destinationAirport", "destinationAirportID",
"codeshare", "stops", "equipment")
# Getting the data ready for plotting
# * For a detailed explanation on setting up the data I suggest consulting Max Marchi's post:
# http://www.milanor.net/blog/maps-in-r-plotting-data-points-on-a-map/
library(plyr)
departures <- ddply(routes, .(sourceAirportID), "nrow")
names(departures)[2] <- "flights"
arrivals <- ddply(routes, .(destinationAirportID), "nrow")
names(arrivals)[2] <- "flights"
airportD <- merge(airports, departures, by.x = "ID",
by.y = "sourceAirportID")
airportA <- merge(airports, arrivals, by.x = "ID",
by.y = "destinationAirportID")
airportD$type <- factor("departures")
airportA$type <- factor("arrivals")
# The final data frame used for plotting
airportDA <- rbind(airportD, airportA)
# Get the map of Europe from Google Maps
library(ggmap)
map <- get_map(location = 'Europe', zoom = 4)
# Make a facetted map plot
library(ggplot2)
facet.gmap <- ggmap(map) +
geom_point(aes(x = lon, y = lat,
size = sqrt(flights)),
data = airportDA, alpha = .5) +
scale_size(breaks = sqrt(c(1, 5, 10, 50, 100, 500)),
labels = c(1, 5, 10, 50, 100, 500), name = "routes") +
theme(legend.position = "bottom",
legend.direction="horizontal") +
guides(size=guide_legend(nrow=1)) +
facet_wrap(~ type, ncol=2)
facet.gmap
Je voudrais ajouter une barre d'échelle et une flèche nord à l'extérieur de la zone de traçage , sur le côté droit de la légende du tracé par exemple, pour obtenir quelque chose comme ceci:
J'ai essayé d'utiliser les fonctions scalebar
et north
du paquet ggsn
, mais ceux-ci les fonctions permettent seulement d'ajouter des barres d'échelle et des flèches nord à l'intérieur de la zone de tracé. Mes tentatives d'utilisation de ces fonctions sont les suivantes:
# Adding a scale bar (but can't positioned it outside of the plot area)
library(ggsn)
bb <- attr(map, "bb")
bb2 <- data.frame(long = unlist(bb[c(2, 4)]), lat = unlist(bb[c(1,3)]))
scale.bar <- facet.gmap +
scalebar(data = bb2, dist = 250, dd2km = TRUE,
model = "WGS84",
st.size=2.5,
height=0.015,
location = "topleft",
facet.var='airportDA$type',
facet.lev='departures',
anchor = c(
x = bb$ll.lon + 0.05 * (bb$ur.lon - bb$ll.lon),
y = bb$ll.lat + 0.9 * (bb$ur.lat - bb$ll.lat)))
scale.bar
# Adding a north arrow (but can't positioned it outside of the plot area)
north2(scale.bar,x=0.12,y=0.90, scale=0.09, symbol=3)
Quelqu'un a-t-il des suggestions? Merci d'avance.
Essayez [éteindre écrêtage] (http://stackoverflow.com/a/9691256/496488), puis exécutez le code pour ajouter la barre d'échelle. – eipi10
@ eipi10 J'ai essayé de désactiver l'écrêtage mais cela n'a pas fonctionné. La barre d'échelle * a disparu (* la fonction 'scalebar' du paquetage' ggsn' a ajouté une barre d'échelle aux départs et à la facette des arrivées.Le retrait d'une de ces barres d'échelle est un problème que je ne sais pas comment résoudre). –