Lebih

Peta Panas Geografis dengan Lingkaran Konsentris berdasarkan Jarak?

Peta Panas Geografis dengan Lingkaran Konsentris berdasarkan Jarak?


Saya ingin membuat peta panas geografis (menggunakan 'ggmap') yang melapisi beberapa dimensi (untuk memulai, harga perumahan) di atas lintang/bujur dekat pusat kota. Kemudian saya ingin membuat lingkaran dengan jarak yang sama (yaitu 10 mil per lingkaran) untuk mendapatkan gambaran seberapa jauh. Saya juga ingin peta panas saya berubah dari biru ke merah untuk dimensi rendah ke tinggi. Saya telah berjuang dengan ini selama sehari dan sejauh ini yang saya dapatkan:

membutuhkan(ggmap) membutuhkan(ggplot2) ggmap(NewYork) + stat_density2d(data=posisi, pemetaan=aes(x=lon, y=lat, fill=… level… ), geom="polygon", alpha=0.2) + geom_point (bentuk=1, aes(x = housing.data.NY$Longitude, y = housing.data.NY$Latitude, size=sqrt(distance)), data = posisi, alfa = .9, color="hitam") + scale_size(range=c(3,20)) + labs(x = "Bujur", y = "Lintang", isi = "Perumahan 
 Kepadatan Harga") + ggtitle("Harga Perumahan Berdasarkan Jarak
 New York, Desember 2014")

Kode melakukan hal berikut:

  1. Muat file GoogleMap yang dibuat sebagai lapisan
  2. Buat peta panas harga
  3. Tambahkan lingkaran konsentris dengan radius ~ jarak dari pusat kota (PERLU BEKERJA)
  4. Skala lingkaran (atau setidaknya coba)
  5. Tambahkan label untuk membuat plot lebih mudah dibaca
  6. Tambahkan judul plot

Kode menghasilkan output berikut:


Berikut adalah saran. Saya membuat lingkaran dengangBufferdan kemudian memproyeksikan ulang mereka ke WGS84 untuk ggmap.

Untuk mengubah warna peta panas gunakanscale_fill_gradient().

library(ggmap) library(sp) library(rgdal) library(rgeos) # dapatkan koordinat NY nyc <- geocode("New York") # buat koordinat objek spasialPoint(nyc) <- ~ lon + lat proj4string(nyc) < - CRS("+init=epsg:4326") # proyeksi ulang ke Google Mercator (meter) nyc.mrc <- spTransform(nyc, CRS = CRS("+init=epsg:3857")) # cincin konsentris (dalam mil) : dist.miles <- seq(10, 50, 10) # buat kerangka data dengan koordinat lingkaran circ.df <- do.call(rbind, lapply(dist.miles,function(n){ circ <- gBuffer(nyc .mrc, lebar = 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) }) ) # posisi teks text.pos <- cbind(aggregate( y ~ distance, data=circ.df, FUN=min), x=nyc$lon, row.names = NULL) # memalsukan heatmap set.seed(1) xy <- data.frame(x=runif(100, -74.5, -73.5),y=runif(100, 40.2, 41.2)) # get basemap 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 = " biru", tinggi = "merah") + geom_path(data=circ.df, aes(x=x, y=y, grup=jarak), alfa=0,5) + geom_text(data=text.pos, aes(x= x, y=y, label=paste0(jarak,"mi")))


Tonton videonya: Ուսուցողական խոսող քարտեզ