Jumat, 09 Desember 2016

Aplikasi Sistem Informasi Geografis : Membuat Pie Chart pada Maps menggunakan Scatterpie

Sumber :R-Bloggers yang dipost oleh R on Guangchuang Yu
Membuat pie chart di ggplot / ggmap bukanlah tugas yang mudah, karena ggplot2 tidak menyediakan pie GEOM asli. Pie yang terdapat pada ggplot2 sebenarnya barplot transformasi koordinasi polar. 
Ini yang menyebabkan sulit jika kita ingin menghasilkan peta seperti gambar di atas, yang diposting oleh Tyler Rinker, penulis R paket pacman.
Pertanyaannya tetap belum terpecahkan sampai ia menemukan bahwa ggtree bisa melakukannya. Solusi ggtree adalah dengan menggunakan subview fungsi, yang baik untuk subplot embed dan dapat menanamkan berbagai jenis plot dan bahkan file gambar pengguna sendiri.

Tetapi memiliki kelemahan sendiri untuk merencanakan pie di peta. Pertama, membuat plot sebagai gambar raster membuatnya lambat untuk membuat ketika kita merencanakan banyak pie. Kedua kita perlu beberapa hack untuk menambahkan legenda.

Berkat ggforce paket, yang menyediakan implementasi asli dari GEOM pie, kita bisa plot pei pada koordinasi Cartesian. Nah.. kita juga harus membuat sebuah fungsi pembungkus untuk membuatnya lebih mudah untuk merencanakan serangkaian pei. Sebagai contoh, misalkan kita memiliki data sebagai berikut:
> set.seed(123)
> long <- rnorm(30, sd=100)
> lat <- rnorm(30, sd=50)
> d <- data.frame(long=long, lat=lat)
> d <- with(d, d[abs(long) < 150 & abs(lat)< 70,])
> n <- nrow(d)
> d$region <- factor(1:n)
> d$A <- abs(rnorm(n, sd=1))
> d$B <- abs(rnorm(n, sd=2))
> d$C <- abs(rnorm(n, sd=3))
> d$D <- abs(rnorm(n, sd=4))
> d$radius <- 6 * abs(rnorm(n))
> head(d)
Data di bawah ini adalah yang akan digunakan untuk membuat Pie Chart, 

Untuk membuat maps, kita menggunakan data map yang telah di sediakan oleh packages scatterpie, anda boleh menggunakan "world" atau boleh juga menggunakan "state", lihat sendiri apa perbedaannya! Oke.. script berikut ini untuk membuat maps dengan penambahan pie chart pada lokasi yang telah ditentukan pada data di atas.
> library(ggplot2)
> library(scatterpie)
> world <- map_data('world')
> p <- ggplot(world, aes(long, lat)) +
+     geom_map(map=world, aes(map_id=region), fill=NA, + color="black") +
+     coord_quickmap()
> p + geom_scatterpie(aes(x=long, y=lat, group=region, r=radius),
+                     data=d, cols=LETTERS[1:4], color=NA, + alpha=.8) +
+     geom_scatterpie_legend(d$radius, x=-160, y=-55)

Ini hanyalah sebuah aplikasi sederhana dari ggforce , dan banyak lagi yang telah ditemukan oleh banyak orang seperti itu . Mereka bahkan meminta saya untuk melaksanakan legenda ukuran pie. Hasil ScatterPie yang dapat saya aplikasikan dengan data random dari distribusi normal mengguakan geom_scatterpie_legend lapisan dan sebagai nama menunjukkan, itu menambahkan legenda ukuran pie seperti yang ditunjukkan pada gambar di dibawah ini.

Sumber script sangat sederhana, namun tidak mungkin tanpa ggforce. Sekarang paket ini telah availabel pada CRAN , Anda dapat menggunakan install.packages('scatterpie') untuk menginstalnya dan mengunjungi sketsa secara online .

Referensi :
http://127.0.0.1:23438/library/scatterpie/doc/scatterpie.R

https://www.r-bloggers.com/scatterpie-for-plotting-pies-on-ggplot/

Tidak ada komentar:

Posting Komentar