2016-10-16 13 views
4

これはrstatsサブディレクトリからクロスポストされます。ミラーリングされたバーまたはグループ化されたバーが表示されていますが、ミラー化されていないグループ化されたバーはありません。私が得ている最も近い「積層」を使用しているが、負の値のために、x軸間で動作するようには思えない、整列されなければならない「ダッジ」のオフセットに関連しながら、棒:x軸のグループ化されたバーをミラーリングします

例のグラフ:

enter image description here

ピンクとブルーのバーの下に緑色と紫色のバーがそれぞれ必要です。これがこのライブラリで可能かどうかは誰にも分かりますか?ここに私が使っているものがあります:

Input = 
" 
treatment group mean sd 
T-Above 10 9 0.6414207 
T-Above 20 3 0.2940872 
T-Above 30 2 0.7539211 
T-Above 40 1 0.5011464 
T-Above 50 7 0.3358966 
T-Below 10 -4 0.3155503 
T-Below 20 -8 0.4169761 
T-Below 30 -2 0.6381697 
T-Below 40 -8 0.7360393 
T-Below 50 -1 0.4352037 
R-Above 10 30 12.375440 
R-Above 20 32 7.122308 
R-Above 30 27 5.113855 
R-Above 40 22 4.141439 
R-Above 50 26 4.145096 
R-Below 10 -8 0.5532685 
R-Below 20 -5 0.3195736 
R-Below 30 -6 0.2738115 
R-Below 40 -2 0.3338844 
R-Below 50 -4 0.1860820" 
Data = read.table(textConnection(Input),header=TRUE) 

limits <- aes(ymax = Data$mean + Data$sd, ymin = Data$mean - Data$sd) 

p <- ggplot(data = Data, aes(x = factor(group), y = mean, fill = treatment)) 

Pgraph <- p + 
      geom_bar(stat = "identity", position = position_dodge(0.9),color="#000000") + 
      geom_errorbar(limits, position = position_dodge(0.9), width = 0.25) + 
      labs(x = "x", y = "y") + 
      ggtitle("") + 
      scale_fill_discrete(name = "Treatment") 

Pgraph + theme(
      panel.grid.major=element_blank(), 
      panel.grid.minor=element_blank(), 
      panel.background=element_rect(fill="white"), 
      panel.border=element_rect(fill=NA,color="black")) 

私はここで既存の答えを見落としていた場合はお詫び申し上げます。

答えて

4

これはいかがですか?

library(ggplot2) 
library(tidyr) 

limits <- aes(ymax = Data$mean + Data$sd, ymin = Data$mean - Data$sd) 

Data %>% separate(treatment, c("Type", "Pos")) %>% 
    ggplot(aes(x = factor(group), y = mean, group = Type, fill = interaction(Pos, Type))) + 
    geom_bar(stat = "identity", position = position_dodge(0.9), color="#000000") + 
    geom_errorbar(limits, position = position_dodge(0.9), width = 0.25) + 
    labs(x = "x", y = "y") + 
    ggtitle("") + 
    scale_fill_discrete(name = "Treatment", 
     labels = c("R-Above","R-Below", "T-Above", "T-Below")) + 
    theme(panel.grid.major=element_blank(), 
     panel.grid.minor=element_blank(), 
     panel.background=element_rect(fill="white"), 
     panel.border=element_rect(fill=NA,color="black")) 

enter image description here

+1

@vfischeriまた、ggplot' ''でグループ= type'がを追加することを忘れないでください。 – parksw3

+0

ありがとう!ちょうど私が理解するように、 'group = Type'は' factor(group) 'を指していますか? – vfischeri

+0

@vfischeriいいえ、 'y = mean、group = Type、fill = interaction(Pos、Type)'の 'group = Type'を意味します。 'factor(group)'の直後に来ます。 'group = Type'がなければ、figureは' type'と 'post'の両方で' interaction'のためにグループ化され、あなたはその質問のグラフと同じグラフになります。 – parksw3

関連する問題