R'deki haritalarda çubuk grafikler mi çiziyorsunuz?


14

Ben kullanıyorum plotrixiçinde RABD devlet düzeyinde harita çizmek için. floating.pieHer duruma pasta grafikler koymak için mükemmel bir işlevi vardır .

plotrixHer durumda çubuk grafik görüntülemek için paket içinde benzer işlevler olup olmadığını merak ediyorum ? (Belgelere bir göz attım ve çubuk grafiklerle uğraşan işlevler bu olasılığa sahip görünmüyor, ancak sadece emin olmak istedim.) Mümkünse plotrix paketi içinde çalışmayı tercih ediyorum, ancak adlandırmaktan çekinmeyin diğer paketler.

Örnek olarak, buna benzer bir harita üretmekle ilgilenirim (ancak ABD için):

resim açıklamasını buraya girin

ABD haritamda, her eyalet için bir tane olmak üzere 50 çubuk grafik olurdu.

Bu haritayı /programming/20465070/barplots-on-a-map adresinden aldım , ancak ggsubplot'un R sürümümde (diğerlerinin yayında söylediklerine benzer) çalışmadığı anlaşılıyor ).


2
Ayrıca ggsubplotpaketle nasıl yapılacağını da biliyordum , ancak şimdi kullanımdan kaldırıldı ve işe yaramayacak (belirttiğiniz gibi). Belki de bu yazı bir başlangıç ​​noktası olabilir: stackoverflow.com/questions/36063043/…
Andre Silva

Bu tür işlevlerin var olup olmadığını görmek için plotrix üzerindeki belgelere bakın. Sonra plotrix yaratıcısına danışın.
Mox

Yanıtlar:


1

Buna gerçekten geç kaldığımı biliyorum, ama bence oldukça basit bir çözüm buldum.

floating.pie()(Örneğin arayarak getAnywhere(floating.pie)) kaynak koduna baktığınızda, bunun çok basit ama etkili bir yaklaşım kullandığını göreceksiniz: pasta parçalarını çokgen olarak çizme. Çubuk grafiklerinizden istediğiniz tek şey çubuklarsa (etiket, eksen vb. Yok), aynı yaklaşımı izleyebilir ve kendi işlevinizi yazabilirsiniz. İşte hızlı ve kirli bir sürüm:

# 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 değerlerin çubuklarla temsil edilmesi içindir
  • xllcve yllckullandığınız koordinat sisteminde sol çubuğun sol alt köşesinin konumunu belirtin
  • barwidthve maxheightçubukların boyutunu ölçeklemek için kullanılır

İşte temel sptabanlı bir komplo ile bir demo . Daha önce birlikte çalıştığımı sanmıyorum plotrix, ancak nasıl floating.pieçalıştığına bağlı olarak, bunun da birlikte çalışması gerektiğini varsayacağım 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)

Sonuç şuna benzer: yukarıdaki koddan kaynaklanan örnek harita


Harita çubukları satırı> harita çubukları (x = x1, xllc = -110, yllc = 40, barwidth = .5, maxheight = 5) çalıştırdığımda bu hatayı alıyorum (x = x1, xllc = -110, yllc = 40, barwidth = 0.5, maxheight = 5): "mapbars" işlevi bulunamadı
324

Cevabımın ilk bölümünde kodu çalıştırmadığınız anlaşılıyor. Fonksiyon mapbars, ilk büyük kod bloğunda tanımlanır, burada söylenir mapbars <- function (x, xllc = 0, .... Yeni komutu "öğretmek" için önce kodun bütün bölümünü yürütmeniz gerekecektir.
Nerede benim havlu

-1

ggplot2 ve ggvis , grafikleri harita üzerinde görüntülemenize yardımcı olabilecek iki kütüphanedir. Ggplot2'de harita üzerinde kabarcıklar çizebilir ve daha sonra aes () 'e, balonun boyutu ve rengi ile ilgisi olmayan koordinatları vermeniz gerekir. Çubuk grafikle ilgili olarak, biri çubuk grafik konumu ve diğeri çubuk grafiğin yüksekliği ve genişliği için en az 2 çift x ve y atamanız gerekir. Başka bir deyişle, bir bar için 4 köşenin koordinatlarını bilmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.