ggplot

2016-05-11 7 views
2

を用いて2次元の値を持つchoropleth(ポリゴン)マップを作成する私は2次元の値を視覚化choroplethマップを作成したい(=色v1v2が要因順序付けされる順序対(v1, v2)に記載のポリゴンを埋めます) 。私は2つの次元を持つカラーマトリックス伝説はそれを明確に私が達成したいと考えます enter image description hereggplot

:ここ

は、結果がどのように見えるべきかの一例です。

これはggplot2::geom_polygonを使用して実装したいと思います。


最小例:私はちょうど1上記の例を次のように2次のマップを結合したいと思います

ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3")) 

values <- data.frame(
    id = ids, 
    v1 = factor(c("Hi","Med","Med","Hi","Lo","Lo"), 
       levels=c("Lo", "Med", "Hi"), ordered=TRUE), 
    v2 = factor(c("Hi","Lo","Lo","Med","Med","Hi"), 
       levels=c("Lo", "Med", "Hi"), ordered=TRUE)) 

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)) 

datapoly <- merge(values, positions, by=c("id")) 

。ポリゴンの色の塗りつぶしは、順序付きのペア(v1, v2)に従う必要があります。もちろん、カラーマトリックスの凡例が必要です。

library("ggplot2") 
ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=v1, group=id)) 
ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=v2, group=id)) 

enter image description here

+0

私は同様の質問をしばらく前に尋ねました - 純粋に2次元の凡例に焦点を当てました:http://stackoverflow.com/q/20129299/903061 – Gregor

答えて

-1

いかがinteraction(v1, v2)、そして得られた相互作用に単一のスケールをマッピング?

# using your inputs 
values$v1_2 <- interaction(values$v1, values$v2) 
... 
datapoly <- merge(values, positions, by=c("id")) 

library(ggplot2) 
library(scales) 
library(RColorBrewer) 
ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=v1_2, group=id)) + 
    scale_fill_brewer(palette= "Blues") 

enter image description here

または、上記のコメントににリンクされている@gregorソリューションを使用しています。

+0

mh、私は本当に行列の伝説としない単一のスケール...上に投稿された@gregorのリンクは間違いなく正しい方向に進みます... –