Merencanakan bagan batang pada peta di R?


14

Saya menggunakan plotrixdalam Runtuk merencanakan peta tingkat negara AS. Ini memiliki fungsi yang sangat baik floating.pieuntuk meletakkan diagram lingkaran di setiap negara bagian.

Saya bertanya-tanya apakah ada fungsi serupa dalam plotrixpaket untuk menampilkan diagram batang di setiap negara? (Saya melihat dokumentasi dan fungsi-fungsi yang berhubungan dengan bar chart sepertinya tidak memiliki kemungkinan ini, tetapi saya hanya ingin memastikan.) Saya lebih suka bekerja dalam paket plotrix jika mungkin, tetapi merasa bebas untuk menyebutkan nama paket lainnya.

Sebagai contoh, saya akan tertarik untuk menghasilkan peta yang mirip dengan ini (tetapi untuk AS):

masukkan deskripsi gambar di sini

Untuk peta AS saya, akan ada 50 grafik batang, satu untuk setiap negara bagian.

Saya mendapatkan peta ini dari /programming/20465070/barplots-on-a-map , tetapi tampaknya ggsubplot tidak berfungsi pada versi R saya (mirip dengan apa yang orang lain katakan di pos ).


2
Saya juga tahu bagaimana melakukannya dengan ggsubplotpaket, tetapi sekarang sudah usang dan tidak akan berfungsi (seperti yang Anda sebutkan). Mungkin posting ini bisa menjadi titik awal: stackoverflow.com/questions/36063043/…
Andre Silva

Konsultasikan dokumentasi pada plotrix, untuk melihat apakah fungsi tersebut ada. Kemudian konsultasikan dengan pencipta plotrix.
Mox

Jawaban:


1

Saya tahu saya benar-benar terlambat dengan ini, tetapi saya pikir saya telah menemukan solusi yang agak sederhana.

Jika Anda melihat-lihat kode sumber floating.pie()(misalnya dengan menelepon getAnywhere(floating.pie)), Anda akan melihat bahwa itu menggunakan pendekatan yang sangat sederhana namun efektif: menggambar segmen pai sebagai poligon. Jika yang Anda inginkan dari diagram batang adalah bilah (tanpa label, sumbu, dll.), Anda dapat mengikuti pendekatan yang sama dan menulis fungsi Anda sendiri. Ini versi cepat dan kotor:

# the function 
mapbars <- function (x, xllc = 0, yllc = 0, barwidth=1, maxheight=10){
  # calculate how long each bar needs to be
  bars <- (x/max(x)) * maxheight
  # get some quick colors
  col <- rainbow(length(x))

  for(i in 1:length(x)){
    # figure out x- and y coordinates for the corners
    leftx   <- xllc + ((i-1) * barwidth)
    rightx  <- leftx + barwidth
    bottomy <- yllc
    topy    <- yllc + bars[i]
    # draw the bar
    polygon(x=c(leftx, rightx, rightx, leftx, leftx),
            y=c(bottomy, bottomy, topy, topy, bottomy),
            col=col[i])
  }
}
  • x adalah untuk nilai-nilai yang diwakili oleh bar
  • xllcdan yllctentukan posisi sudut kiri bawah bilah kiri dalam sistem koordinat apa pun yang Anda gunakan
  • barwidthdan maxheightdigunakan untuk menskalakan ukuran bar

Berikut ini demo dengan spplot dasar . Saya tidak berpikir saya pernah bekerja dengan plotrixsebelumnya, tetapi berdasarkan pada cara floating.piekerjanya, saya berasumsi bahwa ini juga harus bekerja plotrix.

library(sp)
library(maptools) # just for easy access to a background map
# load some country borders as a background
data("wrld_simpl")
plot(wrld_simpl)

# zoom on a bit …
mexico <- subset(wrld_simpl, NAME=="Mexico")
plot(mexico, axes=TRUE)

# data for the bars
x1 <- c(4, 7, 1, 2)

# plot
plot(mexico, axes=TRUE)
mapbars(x=x1, xllc=-110, yllc=20, barwidth=.5, maxheight=5)
legend(x="topright", pch=22, col="black", pt.bg=rainbow(x1), legend=c("foo", "bar", "baz", "foobar"))

# add another one:
x2 <- c(9, 21, 64, 45, 33, 43, 12, 7)
mapbars(x=x2, xllc=-100, yllc=25, barwidth=.2, maxheight=2)

Hasilnya terlihat seperti ini: contoh peta yang dihasilkan dari kode di atas


Saya menerima kesalahan ini ketika saya menjalankan garis mapbars> mapbars (x = x1, xllc = -110, yllc = 40, barwidth = .5, maxheight = 5) Kesalahan pada mapbars (x = x1, xllc = -110, yllc = 40, barwidth = 0,5, maxheight = 5): tidak dapat menemukan fungsi "mapbars"
324

Kedengarannya Anda tidak menjalankan kode pada bagian pertama dari jawaban saya. Fungsi mapbarsini didefinisikan dalam blok kode besar pertama, di mana dikatakan mapbars <- function (x, xllc = 0, .... Anda harus menjalankan seluruh bagian kode terlebih dahulu, untuk "mengajarkan" R perintah baru.
Di mana handukku

-1

ggplot2 dan ggvis adalah dua perpustakaan yang dapat membantu Anda untuk menampilkan plot di peta. Di ggplot2 Anda dapat memplot gelembung pada peta dan kemudian Anda hanya perlu memberikan aes () koordinat yang tidak ada hubungannya dengan ukuran dan warna gelembung. Mengenai bagan batang, Anda harus menetapkan setidaknya 2 pasang x dan y, satu untuk lokasi bagan batang dan yang lainnya untuk tinggi dan lebar bagan batang. Dengan kata lain, Anda perlu mengetahui koordinat 4 sudut untuk sebuah bar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.