2017-12-21 9 views
1

HauptdatenrahmenPlot und Facette eine Karte in R

data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042), 
       lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699), 
       views = c(13565, 27020, 74420, 18550, 73253, 14615), 
       challenge = c("SPOT CIDADE", "SPOT NATUREZA I", 
           "SPOT NATUREZA II", "SPOT ROMANCE", 
           "SPOT PATRIMONIO", "SPOT GASTRONOMIA"), 
       stringsAsFactors = FALSE) 

Ich versuche, eine Karte zu zeichnen, für den Druck, und das Ergebnis wäre eine Karte für jede Herausforderung sein und die Punkte ihrer Größe auf die sich wandelnde Basis Ansichten jedes Video hat.

Bis jetzt bringt mein Code alle Punkte in der gleichen Map - ich habe Probleme mit der Facettierung und die Größe der Punkte zu ändern.

Wenn ich die Variable in der Ästhetik ändere, werden die Punkte riesig.

Die Zoomstufen sind entweder zu nah oder zu weit.

Der Code, den ich verwende, ist unten. jedes Beispiel, das ich sehe, ist entweder zu weit von der Notwendigkeit, die ich brauche, oder es einfach nicht arbeiten.

Mache ich es richtig, oder benötigt das einen anderen Ansatz?

Danke!

library(ggplot2) 
library(ggmap) 

lon <- as.numeric(new$lon) 
lat <- as.numeric(new$lat) 


spots_df <- as.data.frame(cbind(lon, lat)) 

mapa_spots <- get_map(location = c(lon = mean(spots_df$lon), lat = mean(spots_df$lat)), zoom = 6, maptype = "terrain", scale = 2) 

plot_spots <- ggmap(mapa_spots) + 
    geom_point(data = spots_df, aes(x = lon, y = lat, fill = "red", alpha = 0.8), size = 2, shape = 21) + 
    guides(fill=FALSE, alpha=FALSE, size=FALSE) 

plot_spots 

Das Ergebnis, das ich von diesem Code erhalten:

plot_spots

+0

Bitte, die Ausgabe von 'dput (spots_df)' teilen. Es wäre einfacher, dir zu helfen. –

+0

Es ist nicht klar aus deiner Frage, wie das aussehen soll. – dshkol

+0

Es tut mir leid. Jeder Punkt repräsentiert ein Video und ich möchte, dass die Punkte basierend auf den Ansichten ihre Größe ändern. Und ich möchte jede Herausforderung in einer separaten Karte haben. – SaoCricalho

Antwort

0

Datenrahmen wird dt genannt Unter der Annahme, hier ist eine grafische Darstellung mit und . Der Schlüssel ist, base_layer Argument mit ggplot(dt, aes(...)) zu verwenden, so dass Sie weitere geom genau wie ein ggplot Anruf hinzufügen können. Du hast erwähnt, dass du jede Herausforderung in einer separaten Karte in deinem Kommentar haben möchtest. Ich denke, facet_wrap ist wahrscheinlich, was Sie suchen.

library(ggplot2) 
library(ggmap) 

mapa_spots <- get_map(location = c(lon = mean(dt$lon), 
            lat = mean(dt$lat)), 
         zoom = 6, maptype = "terrain", scale = 2) 

ggmap(mapa_spots, base_layer = ggplot(dt, aes(x = lon, y = lat, size = views))) + 
    geom_point() + 
    facet_wrap(~challenge, ncol = 3) 

enter image description here

DATA

dt <- data.frame(lat = c(38.6938, 38.4262, 32.7607, 37.083, 39.4619, 41.0042), 
       lon = c(-9.20587, -8.90007, -16.9595, -8.90918, -8.38391, -7.9699), 
       views = c(13565, 27020, 74420, 18550, 73253, 14615), 
       challenge = c("SPOT CIDADE", "SPOT NATUREZA I", 
           "SPOT NATUREZA II", "SPOT ROMANCE", 
           "SPOT PATRIMONIO", "SPOT GASTRONOMIA"), 
       stringsAsFactors = FALSE) 
+0

Ja, das ist es! Das Argument {base_layer} ist ein neuer Tipp für mich. Vielen Dank! – SaoCricalho