私の問題のサンプルデータが含まれていないことをお詫びします。サンプルのシェープファイルを簡単に作成する方法が見つかりませんでした。うまくいけば、の経験豊富なユーザーはggplot
、以下の説明から私がやりたいことを見ることができます。
私が持っている:
サンプルプロットに関する
data.frame
情報をplotid
含むXvar1
(、、、、、、…)var2
var3
var4
Y
サンプルプロットの空間情報を含むポリゴンシェープファイル
シェープファイルY
(with maptools
)とfortify
ing as data.frame
Z
(ggplot2
)のインポートは正常に機能します。melt
同様X
にX_melted
うまく機能します。merge
-ingZ
とX_melted
toも同様にmapdf
機能します。
つまり、空間情報と、、、、…</p>を含む長いdata.frame
形式var1
ができ
ました。var2
var3
次に、このデータフレームを次のようにプロットします。
pl1 <- ggplot(mapdf,aes(long,lat),group=group)
pl1 <- pl1 + geom_polygon(aes(group=group,fill=value),colour="black")
pl1 <- pl1 + facet_grid(variable ~ .)
pl1 <- pl1 + coord_equal(ratio = 1)
pl1
結果は、変数ごとに1つのパネルを持つ素晴らしいプロットです。パネルのマップは同じですが、塗りつぶしの色は変数の値によって異なります。これまで、すべてが魅力のように機能します…1つの問題があります:
変数の最小値と最大値は異なります。たとえば、から、から、、var1
から、などになります。この例では、塗りつぶしの色の凡例はからになります。きれいに描かれていますが、基本的に同じ色です。0
5
var2
0
400
var3
5
10
0
400
var2
var1
var3
ファセットのパネルごとに異なる凡例を使用する方法はありますか?それとも、これは(まだ)一緒にfacet_wrap
またはfacet_grid
で不可能ggplot
ですか?
変数ごとに個別のプロットを作成し、それらをビューポートと結合することもできますが、変数がたくさんあるため、これは大変な作業になります。
それとも、やりたいことを達成するために使用できる別のパッケージや方法はありますか?
そして、助けていただければ幸いです。:)
編集:ggplot2
-packageの説明を使用して、問題を説明する例を作成しました。
ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))
values <- data.frame(
id = ids,
val1 = cumsum(runif(6, max = 0.5)),
val2 = cumsum(runif(6, max = 50))
)
positions <- data.frame(
id = rep(ids, each = 4),
x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)
values <- melt(values)
datapoly <- merge(values, positions, by=c("id"))
p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
p <- p + facet_wrap(~ variable)
p
右側のパネルはvar2
、マップ上ののさまざまな値を示しています。ただし、左側のパネルでは、すべてのポリゴンが同じ色になっています。すべてのパネルに1つのカラーグラデーションのみが使用されるため、これは論理的です。パネルごとに異なるカラーグラデーションを使用できますか?