私は2つの異なる生息地タイプ(hab 1とhab 2)の間で種の分布をプロットしようとしています。私の種のいくつかは二次的にいくつかの生息地を使用しているので、私は二次的なhab1(hab1.sec)のための別の列を持っています。 2つの生息地と異なる深度にわたる分布を視覚化するために、hab1とhab2の間にfacet_gridを使用しています。以下のようなサンプルコード:既存のファセットグリッドに線分を追加するggplot r
# example code
set.seed(101)
ID <- seq(1,20, by=1) ## ID for plotting
species <- sample(letters, size=20) ## arbitrary species
## different habitat types in hab.1
hab1 <- c("coastal","shelf","slope","open.ocean","seamount")
hab1.pri <- sample(hab1, size = 20, replace = T)
## secondarily used habitats, may not be present for some species
hab.sec <- c("coastal","shelf","slope","open.ocean","seamount", NA)
hab1.sec <- sample(hab.sec, size = 20, replace = T)
## habitat types for hab.2
hab2 <- c("epipelagic","benthopelagic","epibenthic","benthic")
hab.2 <- sample(hab2, size = 20, replace = T)
## arbitrary depth values
dep.min <- sample(seq(0,1000), size = 20, replace = T)
dep.max <- sample(seq(40, 1500), size = 20, replace = T)
# make data frame
dat <- data.frame(ID, species, hab1.pri, hab1.sec, hab.2,dep.min, dep.max)
# ggplot with facet grid
p <- ggplot(data=dat)+ geom_segment(aes(x=as.factor(ID),xend=as.factor(ID),y=dep.min, yend=dep.max),size=2,data = dat)+ scale_y_reverse(breaks = c(0, 200, 1000,1500))+facet_grid(hab.2~hab1.pri, scales = "free" ,space = "free")+theme_bw()
私は既存のファセットグリッド内hab1.secためのセグメントを追加したいです。私はこのコードを試しました:
p+ geom_segment(aes(x=as.factor(ID),xend=as.factor(ID),y=dep.min, yend=dep.max),linetype=2,data = dat)+facet_wrap(~hab1.sec)
しかしこれで新しいグラフが作成されます。
(好ましくは破線など)既存のグリッドにそれらの余分な行を追加するための良い方法はありますか? 私はこれに助けてくれて本当に感謝しています! ありがとう、事前に!
[この回答](http://stackoverflow.com/a/8354731/2461552)のアプローチはここでうまくいくかもしれません。 – aosmith
@aosmithに返信してくれてありがとう! 'p + facet_grid(.g、marginins = TRUE)'の部分を意味しましたか?残念ながら、それは私のために働いていませんでした.. – diya
いいえ、2番目の 'geom_segment'呼び出しでデータセットから2番目のファセット変数を削除します。それはかなり簡単でしたが、あなたの最終的な結果がどのように見えていたのか分かりませんでした。 – aosmith