2017-10-20 3 views
1

Ich habe einen Datenrahmen von lat lons, die einen Mittelpunkt umgeben. Die Latons repräsentieren zwei Gruppen. Die Gruppen werden mit einer 1 oder einer 0 dargestellt. Ich kann den Mittelpunkt mit verschiedenen Formen und Farben darstellen, aber dann möchte ich, dass die Farben deutlicher werden. Ich möchte auch zwei Kreise um die Punkte, 300 Meter, und 600 Meter jeweils plotten. Ich habe Arbeit versucht, mitZeichnen Sie zwei Kreise um den Mittelpunkt der Daten

Plot circle with a certain radius around point on a map in ggplot2

haben aber

eine kleine Probe dieser sieht aus wie

lat <- c(42.99052, 42.99085, 42.99046, 42.99081, 42.99197, 42.99122, 42.99154,42.99161, 42.99102, 42.99014, 42.98966, 42.99091, 42.99092, 42.99114 ,42.99000) 
lon <-c(78.69961, -78.69871, -78.69878, -78.69868, -78.69825, -78.69929, -78.69784, -78.69960, -78.69904, -78.69918, -78.69998, -78.69746, -78.70145, -78.70020, -78.70010) 
response <- c(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1) 
data <- data.frame(lat, lon, response) 

Mein Mittelpunkt kein Glück hatte

(42.990707, -78.698899) 

I erhalten meine Karte ohne Kreise und verschiedene Farben wie diese

library(ggplot2) 
library(ggmap) 
library(viridis) 

#getting map 

mapgilbert <- get_map(location = c(lon = -78.698899 , lat=42.990707), zoom = 17, 
        maptype = "terrain", scale = 2) 

ggmap(mapgilbert) + 
    geom_point(data = data, aes(x = lon, y = lat, color = response , alpha = 1, fill = response), 
      size = 2, shape = response) + 
    guides(fill = FALSE, alpha = FALSE, size = FALSE) + 
    scale_color_viridis(begin = 0, end = .7) 

jede Hilfe wäre willkommen.

+0

Ich empfehle Ihnen, diese Antwort von der Frage, die Sie verknüpft folgen ändern: https://stackoverflow.com/a/34187878/ 7446435 Sie müssen vielleicht ein wenig über Projektionen lernen, aber es ist im Grunde die einfachste Möglichkeit, genau das zu bekommen, was Sie brauchen. – Jul

+0

@ Mikel Arnaiz, warum planst du Kreise für? ;-) –

Antwort

0

bekam ich die Lösung, die durch die Antwort in

Plot circle with a certain radius around point on a map in ggplot2

center_df<-data.frame(ID=c(1),lon=c(-78.698899),lat=c(42.990707)) 

make_circles <- function(centers, radius, nPoints = 500){ 
    # centers: the data frame of centers with ID 
    # radius: radius measured in kilometer 
    # 
    meanLat <- mean(centers$lat) 
    # length per longitude changes with lattitude, so need correction 
    radiusLon <- radius /111/cos(meanLat/57.3) 
    radiusLat <- radius/111 
    circleDF <- data.frame(ID = rep(centers$ID, each = nPoints)) 
    angle <- seq(0,2*pi,length.out = nPoints) 

    circleDF$lon <- unlist(lapply(centers$lon, function(x) x + radiusLon * cos(angle))) 
    circleDF$lat <- unlist(lapply(centers$lat, function(x) x + radiusLat * sin(angle))) 
    return(circleDF) 
} 



myCircles <- make_circles(center_df, 0.2) 
myCircles2 <- make_circles(center_df, 0.1) 
mapgilbert2<- get_map(location = c(lon = -78.70000 , lat=42.991107), zoom = 16, 
        maptype = "terrain", scale = 2) 

ggmap(mapgilbert2)+ 
geom_point(data = data, aes(x = lon, y = lat, fill=as.factor(exposure) , alpha = 1), size = 2, pch=21)+ 
guides(fill=FALSE, alpha=FALSE, size=guide_legend)+ 
scale_color_viridis(begin = 0, end = .7)+ 
geom_point(data=myCircles,aes(x=lon,y=lat), color='red')+ 
geom_point(data=myCircles2,aes(x=lon,y=lat), color='blue')+ 
scale_fill_manual(values=c("purple", "green")) 
Verwandte Themen