Rのマップに棒グラフをプロットしますか?


14

私は、米国の州レベルの地図をプロットするのに使用plotrixRています。floating.pie各状態に円グラフを配置する優れた機能があります。

plotrixパッケージ内に各状態の棒グラフを表示する同様の機能があるかどうか疑問に思っていますか?(ドキュメントを見て、棒グラフを扱う関数にはこのような可能性はないようですが、確認したかっただけです。)可能であればplotrixパッケージ内で作業することを好みますが、他のパッケージ。

例として、これに似たマップを作成することに興味があります(ただし、米国の場合)。

ここに画像の説明を入力してください

米国の地図の場合、各州に1つずつ、50の棒グラフがあります。

このマップは/programming/20465070/barplots-on-a-mapから取得しましたが、私のバージョンのRではggsubplotが動作しないようです(他の人が投稿で言っていることと同様) )。


2
ggsubplotパッケージでそれを行う方法も知っていましたが、今では廃止されており、動作しません(あなたが言ったように)。:おそらく、この記事は開始点となりますstackoverflow.com/questions/36063043/...
アンドレ・シルバ

plotrixのドキュメントを参照して、そのような関数が存在するかどうかを確認してください。その後、plotrixの作成者に相談してください。
モックス

回答:


1

私はこれに本当に遅れていることを知っていますが、私はかなり簡単な解決策を見つけたと思います。

のソースコードをfloating.pie()(たとえばを呼び出してgetAnywhere(floating.pie))見ると、非常にシンプルでありながら効果的なアプローチを使用していることに気付くでしょう:パイセグメントをポリゴンとして描画します。棒グラフに必要なのが棒(ラベル、軸などなし)だけである場合、同じアプローチに従って独自の関数を作成できます。これは、簡単で汚いバージョンです。

# 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 値はバーで表されます
  • xllcそしてyllc、あなたが使用している座標系をどのように左のバーの左下隅の位置を指定します
  • barwidthそしてmaxheight、バーのサイズをスケーリングするために使用されます

これは、基本的なspプロットを使用したデモです。私はplotrix以前に働いたことはないと思います が、どのようにfloating.pie機能するかに基づいて、これもで動作するはずだと思い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)

結果は次のようになります。 上記のコードの結果のマップ例


-1

ggplot2ggvisは、マップ上にプロットを表示するのに役立つ2つのライブラリです。ggplot2では、マップ上にバブルをプロットできます。その後、バブルのサイズや色とは関係のない座標をaes()に与えるだけです。棒グラフに関しては、少なくとも2組のxとyを割り当てる必要があります。1つは棒グラフの位置に、もう1つは棒グラフの高さと幅に割り当てます。つまり、バーの4つの角の座標を知る必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.