Saya membaca posting tentang peta interaktif dengan R menggunakan leaflet
paket.
Pada artikel ini, penulis membuat peta panas seperti ini:
X=cbind(lng,lat)
kde2d <- bkde2D(X, bandwidth=c(bw.ucv(X[,1]),bw.ucv(X[,2])))
x=kde2d$x1
y=kde2d$x2
z=kde2d$fhat
CL=contourLines(x , y , z)
m = leaflet() %>% addTiles()
m %>% addPolygons(CL[[5]]$x,CL[[5]]$y,fillColor = "red", stroke = FALSE)
Saya tidak terbiasa dengan bkde2D
fungsinya, jadi saya bertanya-tanya apakah kode ini dapat digeneralisasi ke sembarang bentuk?
Bagaimana jika setiap node memiliki bobot tertentu, yang ingin kami wakili pada peta panas?
Apakah ada cara lain untuk membuat peta panas dengan leaflet
peta di R?
Jawaban:
Inilah pendekatan saya untuk membuat peta panas yang lebih umum di Leaflet menggunakan R. Pendekatan ini menggunakan
contourLines
, seperti posting blog yang disebutkan sebelumnya, tetapi saya gunakanlapply
untuk mengulangi semua hasil dan mengubahnya menjadi poligon umum. Pada contoh sebelumnya terserah kepada pengguna untuk secara individual memplot setiap poligon, jadi saya akan menyebutnya "lebih umum" (setidaknya ini generalisasi yang saya inginkan ketika saya membaca posting blog!).Inilah yang akan Anda miliki pada saat ini:
Dan inilah tampilan peta panas dengan titik-titik:
Berikut adalah area yang menyarankan kepada saya bahwa saya perlu mencari beberapa parameter atau mungkin menggunakan kernel yang berbeda:
sumber
bandwidth
inbkde2d()
?MASS::bandwidth.nrd(dat$latitude)
danMASS::bandwidth.nrd(dat$longitude)
sebagai titik awal. Lihat?MASS::kde2d
dokumentasi yang terhubung denganbandwith.nrd
. Lihat juga?KernSmooth::dpik
apakah Anda tertarik dengan pendekatan lain.gridsize = c(100,100)
itu berarti ada total 10.000 sel?Membangun dari jawaban genorama di atas, Anda juga dapat mengubah output bkde2D menjadi raster daripada garis kontur, menggunakan nilai fhat sebagai nilai sel raster
Ini adalah output Anda. Perhatikan bahwa nilai kerapatan rendah masih muncul sebagai berwarna di raster.
Kami dapat menghapus sel dengan kerapatan rendah ini dengan yang berikut:
Sekarang setiap sel raster dengan nilai kurang dari 1 transparan.
Jika Anda ingin raster yang di biner, gunakan fungsi colorBin daripada fungsi colorNumeric:
Untuk membuatnya lebih lancar, cukup tambahkan ukuran grid pada fungsi bkde2D. Ini meningkatkan resolusi raster yang dihasilkan. (Saya mengubahnya menjadi
Keluaran:
sumber
Cara mudah membuat peta panas Leaflet di R adalah menggunakan plugin Leaflet.heat . Panduan yang sangat baik tentang cara menggunakannya dapat ditemukan di sini . Semoga bermanfaat.
sumber