2016-05-26 8 views
2

これは簡単な質問ですが、ggplotでグラフを作成しようとしていますが、変数の時間に応じてデータをペアで表示しようとしています'私のデータは次のようになります。ggplot:特定の変数と対になる応答変数のグラフを表示

id season  sex treatment time shift(Km) 
1 Early dry PRIDES UNDISTURBED BEFORE 0.016 
2 Early dry PRIDES UNDISTURBED BEFORE 0.016 
3 Early dry PRIDES UNDISTURBED BEFORE 0.016 
4 Wet   PRIDES DISTURBED AFTER 0.0972 

私は下のグラフのように正確なレイアウトを持つように、最終的なグラフをしたいと思いますが、私はまだ把握していないことは、変数に応じてペアで私の応答変数をプロットする方法です'時間'、つまり、それぞれの「治療」グループ(邪魔されている/妨害されていない)でペアになっている前後の値を表示し、下のグラフに示されているように、

enter image description here

これは私が持っているコードです:

ex <- read.csv(file = "https://dl.dropboxusercontent.com/u/23723553/data.csv", 
       header= TRUE, row.names =1) 

ex$time <- relevel(ex$time, ref = "BEFORE") 

ggplot(data = ex, mapping = aes(x = treatment, 
             y = dist_shift.Km., 
             shape= time)) + 
    stat_summary(fun.data = mean_se) + 
    facet_grid(season ~ sex)+ 
    labs(x= "\nTreatment", y = "Shift of centroids (m)\n")+ 
    theme_bw() 

誰かが私は私のコードを修正する助けてもらえますか?

UPDATE:@lukeAで示唆されているように時間と治療のやりとりをプロットすると、私が目指しているものに近づきますが、相互作用プロットを横に並べると「前に邪魔されました」、 「邪魔されていない」。私は、代わりに後ろにプロットしたいと思います。「前に邪魔されました」、「後に邪魔されました」、「前に邪魔されていません。

enter image description here

そして、私は唯一のdisturbed.before「など「の代わりに」」乱されていない「邪魔」していることができますので、時間が前/後にすでにあるx軸に名前を変更する方法ですが凡例で説明された形で説明されています。

多くの感謝!

+1

''代わりに、X = reatment'の 'X =相互作用(治療、時間を)試してみてください - あなたは何をしたいということでしょうか? – lukeA

+0

ありがとうございます。それは私が望むものに近いが、それほどではない。これをさらに説明するために質問を更新しました。 – AnnK

+1

さて、 'x = interaction(time、treatment)'に変更し、 'scale_x_discrete(labels = function(x)sub("。* \\。 "、" "、x)のようなラベラー関数を追加するだけです。 ) '。ラベルを回転させたい場合もあります(例: 'theme(axis.text.x = element_text(angle = 90))'である。 – lukeA

答えて

1

を行うことができます。

ggplot(data = ex, mapping = aes(x = treatment, 
           y = dist_shift.Km., 
           shape= time)) + 
     stat_summary(fun.data = mean_se,position = position_dodge(width=0.2)) + 
     facet_grid(season ~ sex)+ 
     labs(x= "\nTreatment", y = "Shift of centroids (m)\n")+ 
     theme_bw() 

enter image description here

+0

これは素晴らしいことです!ありがとうございました! – AnnK

1

あなたは、たとえばあなたが直前に、互いに近い値の後に配置するposition=position_dodge()stat_summary()に引数を追加する必要が

ggplot(data = ex, mapping = aes(x = interaction(time, treatment), 
             y = dist_shift.Km., 
             shape= time)) + 
    stat_summary(fun.data = mean_se) + 
    facet_grid(season ~ sex)+ 
    labs(x= "\nTreatment", y = "Shift of centroids (m)\n")+ 
    scale_x_discrete(labels = function(x) sub(".*\\.", "", x)) + 
    theme_bw() + 
    theme(axis.text.x=element_text(angle=90, vjust=0.5, hjust=1)) 

enter image description here

関連する問題