異なる伝説、埋ラfacetted ggplot?
質問
申し訳は含まれない例を挙データを自分の問題です。見当たらない方を簡単に制作事例形状ファイルです。れば、経験豊富なユーザーの ggplot
彼の思いから説明します。
私には:
A
data.frame
Xについての情報に振plotid
,var1
,var2
,var3
,var4
, …)ポリゴンshapefile
Y
空間情報のサンプルプロット
輸入のshapefile Y
( maptools
) fortify
グラン data.frame
Z
(ggplot2
を作成します。 melt
ing X
へ X_melted
作品も。 merge
-ing Z
や X_melted
へ mapdf
作品にしています。
として 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
その結果、素敵なプロットとパネルの各可変となります。の地図のパネルを同一のものを記入の色などによって異なりの価値の変数.今までのものように働きが魅力---一つの問題:
の変数に異なる最小-最大値です。例えば、 var1
から 0
へ 5
, var2
から 0
へ 400
, var3
から 5
へ 10
, など。この例では、凡例の色から 0
へ 400
. var2
でも描かれたものの、 var1
や var3
基本的に同じるようになります。
があるので、使うことがで異なる伝説、各パネルのファセット?こちらは日本だけでなだき facet_wrap
または facet_grid
に ggplot
?
っている区画のための各変数参加してポがたっぷりの変数とその一環として行われたのです。
それも別パッケージまたは方法を使うことがでの達成にたいと思います。
との助けが非常によろしくお願いいたします。:)
編集:ののの ggplot2
-パッケージの説明いたる例を示した問題:
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
になります。パネルの左側しかし、すべてのポリゴンの色調。これは論理的かつ色の勾配はすべてのパネルです。が使っている異色の勾配の各パネル?
解決
現在であるにより示したものを除くx-y)
他のヒント
とグリッドの良さ
align.plots <- function(..., vertical=TRUE){
#http://ggextra.googlecode.com/svn/trunk/R/align.r
dots <- list(...)
dots <- lapply(dots, ggplotGrob)
ytitles <- lapply(dots, function(.g) editGrob(getGrob(.g,"axis.title.y.text",grep=TRUE), vp=NULL))
ylabels <- lapply(dots, function(.g) editGrob(getGrob(.g,"axis.text.y.text",grep=TRUE), vp=NULL))
legends <- lapply(dots, function(.g) if(!is.null(.g$children$legends))
editGrob(.g$children$legends, vp=NULL) else ggplot2:::.zeroGrob)
gl <- grid.layout(nrow=length(dots))
vp <- viewport(layout=gl)
pushViewport(vp)
widths.left <- mapply(`+`, e1=lapply(ytitles, grobWidth),
e2= lapply(ylabels, grobWidth), SIMPLIFY=F)
widths.right <- lapply(legends, function(g) grobWidth(g) + if(is.zero(g)) unit(0, "lines") else unit(0.5, "lines")) # safe margin recently added to ggplot2
widths.left.max <- max(do.call(unit.c, widths.left))
widths.right.max <- max(do.call(unit.c, widths.right))
for(ii in seq_along(dots)){
pushViewport(viewport(layout.pos.row=ii))
pushViewport(viewport(x=unit(0, "npc") + widths.left.max - widths.left[[ii]],
width=unit(1, "npc") - widths.left.max + widths.left[[ii]] -
widths.right.max + widths.right[[ii]],
just="left"))
grid.draw(dots[[ii]])
upViewport(2)
}
}
p <- ggplot(datapoly[datapoly$variable=="val1",], aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
p1 <- ggplot(datapoly[datapoly$variable=="val2",], aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id),colour="black")
align.plots( p,p1)
のリスクの記載、あなたが、今思うときの着色による不確かさを満足する水準ではなく、原数値です。その後お変換された値との伝説から0 1になります。
う少し便利にできてみて織り込んだ"の値"となります。例えば:
p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=factor(value), group=id),colour="black")
p <- p + facet_wrap(~ variable)
p
ggplot2利用要因を伝説があります。だファンダメンタルズのカラムを取る"価値"や休憩で織り込む範囲での代替が可能になるかもしれな"価値"とします。
作成するには、対象の列のような"f"
id variable value x y f
1 1.1 val1 0.09838607 2.0 -0.5 0.09-0.13
2 1.1 val1 0.09838607 1.0 0.0 0.09-0.13
3 1.1 val1 0.09838607 1.1 1.0 0.09-0.13
4 1.1 val1 0.09838607 2.2 0.5 0.09-0.13
25 2.1 val1 0.13121347 1.0 0.0 0.13-0.20
...
その利用
p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=f, group=id),colour="black")
p <- p + facet_wrap(~ variable)
p
いの指定について、時間がかかります。しかし、少なくともグラフがどのようにしたいということです。基本的にはワールドを紹介します記録のデータを他のカラムです。いくつか例を挙げてみましょう。