Suite

Cartes thermiques géographiques avec cercles concentriques par distance ?

Cartes thermiques géographiques avec cercles concentriques par distance ?


Je cherche à générer une carte thermique géographique (à l'aide de 'ggmap') qui superpose une certaine dimension (pour commencer, les prix des logements) sur la lat/lon près d'un centre-ville. Ensuite, je veux créer des cercles d'espacement équidistant (c'est-à-dire 10 miles par cercle) pour avoir une idée de la distance. J'aimerais aussi que ma heatmap passe du bleu au rouge pour le bas au haut de la dimension. Cela fait un jour que je me bats avec ça et c'est tout ce que j'ai :

require(ggmap) require(ggplot2) ggmap(NewYork) + stat_density2d(data=positions, mapping=aes(x=lon, y=lat, fill=… level… ), geom="polygon", alpha=0.2) + geom_point (forme=1, aes(x = Housing.data.NY$Longitude, y = Housing.data.NY$Latitude, size=sqrt(distance)), data = positions, alpha = .9, color="black") + scale_size(range=c(3,20)) + labs(x = "Longitude", y = "Latitude", fill = "Densité des prix 
 des logements") + ggtitle("Prix des logements par distance
 New York, décembre 2014")

Le code effectue les opérations suivantes :

  1. Chargez le fichier GoogleMap créé en tant que couche
  2. Créer des cartes thermiques des prix
  3. Ajouter des cercles concentriques avec rayon ~ distance du centre-ville (NEEDS TRAVAIL)
  4. Redimensionnez les cercles (ou essayez au moins de le faire)
  5. Ajouter un étiquetage pour rendre le tracé plus lisible
  6. Ajouter un titre de tracé

Le code produit la sortie suivante :


Voici une proposition. Je crée les cercles avecgBufferpuis reprojetez-les dans WGS84 pour ggmap.

Pour changer les couleurs de la carte thermique, utilisezscale_fill_gradient().

library(ggmap) library(sp) library(rgdal) library(rgeos) # obtenir les coordonnées NY nyc <- geocode("New York") # créer les coordonnées de l'objet spatialPoint(nyc) <- ~ lon + lat proj4string(nyc) < - CRS("+init=epsg:4326") # reprojeter vers Google Mercator (mètres) nyc.mrc <- spTransform(nyc, CRS = CRS("+init=epsg:3857")) # anneaux concentriques (en miles) : dist.miles <- seq(10, 50, 10) # crée un dataframe avec les coordonnées du cercle circ.df <- do.call(rbind, lapply(dist.miles,function(n){ circ <- gBuffer(nyc .mrc, width = n * 1609.344, quadsegs=20) circ.wgs <- spTransform(circ, CRS=CRS("+init=epsg:4326")) coords <- lapply([email protected], function(x ) {[email protected][[1]]@coords}) data.frame(x=coords[[1]][,1], y=coords[[1]][,2], distance=n) }) ) # le texte positionne text.pos <- cbind(aggregate( y ~ distance, data=circ.df, FUN=min), x=nyc$lon, row.names = NULL) # simule une heatmap set.seed(1) xy <- data.frame(x=runif(100, -74.5, -73.5),y=runif(100, 40.2, 41.2)) # get fondmap ny.map <- get_map("New York", zoom = 8) # plot ggmap(ny.map) + stat_density2d(data=xy, mapping=aes(x=x, y=y, fill=… level… ), geom="polygon", alpha=0.2) + scale_fill_gradient(low = " blue", high = "red") + geom_path(data=circ.df, aes(x=x, y=y, group=distance), alpha=0.5) + geom_text(data=text.pos, aes(x= x, y=y, label=paste0(distance,"mi")))


Voir la vidéo: Géométrie plane - Cercles concentriques