2017-10-02 3 views
0

ここで私が持っているのは、2つのグラフ "PlotA"と "PlotB"ですが、geom_pointrangesと点を示す組み合わせグラフ、線を示すgeom_line、標準偏差を示すgeom_ribbonが必要です。geom_pointrangeをgeom_ribbon上に1つプロットする方法は?

water <- c(35,40,42,46,48,50) 
depth <- c(1,2,3,4,5,6) 
sd <- c(10,10,10,10,10,10) 
dataA <- data.frame(depth, water, sd) 

from <- c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5) 
to <- c(1.5, 2.5, 3.5, 4.5, 5.5, 6.5) 
depth1 <- c(1,2,3,4,5,6) 
water1 <- c(40,32,50,55,62,30) 
dataB <- data.frame(from,to,depth1, water1) 

# Load necessary packages 

require(ggplot2) 

# Plotting Started 

#PlotA 
ggplot(data=dataA, aes(x = water, y = depth), na.rm=T) + 
geom_path(size=0.4, color="black")+ 
geom_pointrange(data=dataB, aes(water1, depth1, ymin=from, ymax=to),  size=0.1, color='black') + 
scale_y_reverse(lim = c(10,0), breaks = seq(0,10,1)) + 
theme_bw(12) + 
scale_x_continuous(lim =c(0,100), breaks = seq(0,100,20)) 

#PlotB 
ggplot() + geom_ribbon(data=dataA, aes(x=depth, y=water, ymin = water - sd, ymax = water + sd), alpha=0.3, fill='grey12') + coord_flip() + 
scale_x_reverse(lim = c(10,0), breaks = seq(0,10,1)) + theme_bw(12) + 
scale_y_continuous(lim =c(0,100), breaks = seq(0,100,20)) 
+2

それは不明だと私はちょうどPlotAとPlotBを持つ単一のグラフは、別の上で1つを組み合わせたい、あなたがそこに – PoGibas

+0

こんにちはを期待している、最終的なものを結果あなたの質問を更新してください。 – Rupesh

+0

タイトルが更新されます。私はそれが今少し明確であることを願っています。ありがとう – Rupesh

答えて

1

プロットの途中では使いにくいです。それを使わないでプロットをデバッグし、最後のステップとして追加することを強くお勧めします。

私はこれがあなたが探しているものだと思います。そうでない場合は、希望する結果をより詳細に記述してください。

ggplot(data = dataA, aes(x = depth, y = water)) + 
    geom_ribbon(
     data = dataA, 
     aes(
      x = depth, 
      ymin = water - sd, 
      ymax = water + sd 
     ), 
     alpha = 0.3, 
     fill = 'grey12' 
    ) + 
    geom_path(size = 0.4, color = "black") + 
    geom_point(
     data = dataB, 
     aes(x = depth1, y = water1), 
     size = 0.1, 
     color = 'black' 
    ) + 
    geom_errorbarh(
     data = dataB, 
     aes(
      x = depth1, 
      xmin = from, 
      xmax = to, 
      y = water1 
     ), 
     size = 0.1, 
     height = 0 
    ) + 
    theme_bw(12) + 
    scale_x_reverse(lim = c(10, 0), breaks = seq(0, 10, 1)) + 
    scale_y_continuous(lim = c(0, 100), breaks = seq(0, 100, 20)) + 
    coord_flip() 

enter image description here

+0

これはそのような魔法です。 100%うまく動作します。まさに私が望んでいたもの。グレゴールありがとうございました。それは絶対に素晴らしいことでした。 – Rupesh

関連する問題