2016-05-20 10 views
4

ファセットグリッドを作成しようとしています。それは3つの行と4つの列を持ちます。 2つの行を折れ線グラフにし、1つを積み重ねたgeom_areaにします。私がプロットするときを除いて、それは常に4つの行、すなわち2つの行、2つの領域として表示されます。私はお互いの上に2つの領域が欲しいです。これをどうすれば解決できますか?ggplot同じパネル(ファセットグリッド)内のラインとエリアを結合する

enter image description here

library(ggplot2) 
rawdata_Fig1 <- read.table(text=" 
Date Number mMP Day Rep Parameter FeType Value 
13/03/2016 1 0 2 1 pH NA 3.11 
13/03/2016 2 0 2 2 pH NA 3.13 
13/03/2016 3 0 2 3 pH NA 3.43 
13/03/2016 4 0 2 4 pH NA 3.49 
21/04/2016 0 10 41 1 pH NA 2.87 
21/04/2016 0 10 41 2 pH NA 2.87 
21/04/2016 0 10 41 3 pH NA 2.87 
21/04/2016 0 10 41 4 pH NA 2.85 
13/03/2016 1 0 2 1 Fe2 Fe2 0.965538462 
13/03/2016 57 1 2 1 Fe2 Fe2 0.217846154 
13/03/2016 113 5 2 1 Fe2 Fe2 0.300153846 
13/03/2016 169 10 2 1 Fe2 Fe2 0.226307692 
21/04/2016 0 0 41 1 Fe2 Fe2 9.277692308 
21/04/2016 0 1 41 1 Fe2 Fe2 13.92 
21/04/2016 0 5 41 1 Fe2 Fe2 4.181538462 
21/04/2016 0 10 41 1 Fe2 Fe2 1.066153846 
13/03/2016 1 0 2 1 'PO4 uM' NA 9.39 
13/03/2016 2 0 2 2 'PO4 uM' NA 0.39 
13/03/2016 3 0 2 3 'PO4 uM' NA -0.06 
13/03/2016 4 0 2 4 'PO4 uM' NA -0.06 
13/03/2016 57 1 2 1 'PO4 uM' NA 0.09 
13/03/2016 58 1 2 2 'PO4 uM' NA -0.06 
13/03/2016 59 1 2 3 'PO4 uM' NA 0.54 
13/03/2016 60 1 2 4 'PO4 uM' NA 0.69 
13/03/2016 113 5 2 1 'PO4 uM' NA 113.19 
13/03/2016 114 5 2 2 'PO4 uM' NA 120.54 
13/03/2016 115 5 2 3 'PO4 uM' NA 144.24 
13/03/2016 116 5 2 4 'PO4 uM' NA 101.34 
13/03/2016 169 10 2 1 'PO4 uM' NA 235.17 
13/03/2016 170 10 2 2 'PO4 uM' NA 263.52 
13/03/2016 171 10 2 3 'PO4 uM' NA 252.72 
13/03/2016 172 10 2 4 'PO4 uM' NA 261.72 
21/04/2016 0 10 41 1 'PO4 uM' NA 17.04 
21/04/2016 0 10 41 2 'PO4 uM' NA 26.79 
21/04/2016 0 10 41 3 'PO4 uM' NA 29.49 
21/04/2016 0 10 41 4 'PO4 uM' NA 23.64 
13/03/2016 1 0 2 1 TotFe TotFe 1.316027906 
13/03/2016 57 1 2 1 TotFe TotFe 0.233872429 
13/03/2016 113 5 2 1 TotFe TotFe 0.273511824 
13/03/2016 169 10 2 1 TotFe TotFe 0.158557579 
21/04/2016 0 0 41 1 TotFe TotFe 12.51812087 
21/04/2016 0 1 41 1 TotFe TotFe 18.02799674 
21/04/2016 0 5 41 1 TotFe TotFe 6.167889825 
21/04/2016 0 10 41 1 TotFe TotFe 1.625215185 
",header=TRUE) 

rawdata_Fig1_Fe <- read.table(text=" 
Date Number mMP Day Rep Parameter Value 
13/03/2016 1 0 2 1 Fe2  0.965538462 
13/03/2016 57 1 2 1 Fe2  0.217846154 
13/03/2016 113 5 2 1 Fe2  0.300153846 
13/03/2016 169 10 2 1 Fe2  0.226307692 
21/04/2016 0 0 41 1 Fe2  9.277692308 
21/04/2016 0 1 41 1 Fe2  13.92 
21/04/2016 0 5 41 1 Fe2  4.181538462 
21/04/2016 0 10 41 1 Fe2  1.066153846 
13/03/2016 1 0 2 1 TotFe  1.316027906 
13/03/2016 57 1 2 1 TotFe  0.233872429 
13/03/2016 113 5 2 1 TotFe  0.273511824 
13/03/2016 169 10 2 1 TotFe  0.158557579 
21/04/2016 0 0 41 1 TotFe  12.51812087 
21/04/2016 0 1 41 1 TotFe  18.02799674 
21/04/2016 0 5 41 1 TotFe  6.167889825 
21/04/2016 0 10 41 1 TotFe  1.625215185 
",header=TRUE) 

Fig1 <-ggplot(rawdata_Fig1,aes(x=Day,y=Value, group=Rep)) 
Fig1Pan=Fig1 + theme_bw() 

Fig1panel=Fig1Pan + facet_grid(Parameter ~ mMP, scales="free") + 
    geom_line(data=subset(rawdata_Fig1, Parameter == "pH")) + 
    geom_line(data=subset(rawdata_Fig1, Parameter == "PO4 uM")) + 
    geom_area(data=rawdata_Fig1_Fe, aes(y=pH, x=Day, fill=Parameter, stat='identity')) 

Fig1panel 
+0

に合わせて、新しいfillgroup変数を作成することができます余分なものがあるのか​​、それとも1つ2つの言葉ですか? – rawr

+0

余分なものがありました。修正されました。ありがとう –

+0

2つの領域プロットを1つのプロットに結合したいので、基本的にそれらを積み重ねますか? 2つの領域の行が互いに重なるように行の順序を変更するだけではありませんか? – rawr

答えて

3

あなたは8列と9列ラベルを持つ2つのファセット列を組み合わせて、ファセット層に

rawdata_Fig1$Parameter[rawdata_Fig1$Parameter %in% 'Fe2'] <- 'TotFe' 
# rawdata_Fig1 <- droplevels(rawdata_Fig1) 
rawdata_Fig1_Fe$Parameter2 <- rawdata_Fig1_Fe$Parameter 
rawdata_Fig1_Fe$Parameter[rawdata_Fig1_Fe$Parameter %in% 'Fe2'] <- 'TotFe' 

Fig1 <-ggplot(rawdata_Fig1,aes(x=Day,y=Value, group=Rep)) 
Fig1Pan=Fig1 + theme_bw() 

Fig1Pan + facet_grid(Parameter ~ mMP, scales="free") + 
    geom_line(data=subset(rawdata_Fig1, Parameter == "pH")) + 
    geom_line(data=subset(rawdata_Fig1, Parameter == "'PO4 uM'")) + 

    ## I only changed these lines 
    geom_area(data=rawdata_Fig1_Fe, aes(y=Value, x=Day, group = Parameter2, fill = Parameter2)) + 
    labs(fill = 'Parameter') 

enter image description here

+1

ありがとうございました!私の最後にいくつか考え出しました(あなたがしたことを理解し、コードは問題ありません)。 –

関連する問題