2016-08-15 7 views
0

私はggplot2をよりよく理解しようとしています。下のタスクを実行する方法を探していますが、なぜ現在動作していないのかについての説明に感謝します。 これまでのところ、トピックに関する情報を見つけることができませんでした。ggplot2内の式の評価

私の両方の質問は、ggplot2内の式の使用についてです。

私は私のデータを変換せずにBの値でグループ化され、列Aの平均値をプロットしたいdata.frame

set.seed(1) 
    DF <- data.frame(A = 1:24, B = LETTERS[rep(1:4,6)], C = rep(1:3,8)) 

    head(DF, n = 9) 

    # A B C 
    #1 1 A 1 
    #2 2 B 2 
    #3 3 C 3 
    #4 4 D 1 
    #5 5 A 2 
    #6 6 B 3 
    #7 7 C 1 
    #8 8 D 2 
    #9 9 A 3 

を持っています。

ggplot(DF) + geom_point(aes(x = B , y = mean(A), group = B)) 

が、それはどのようにできた平均値(A)はB.

のすべての値に対して同じである以下の ggplot2 plots universal mean, not grouped mean を返します。 私は次のような何かをすることが可能であることを期待します私はデータを変換せずにこれをプロットしていますか?

私は時々に対して自分自身を見つけるもう一つの障壁は、(facet_grid内の表現を入れしようとしている)またはfacet_wrap()

たとえば、私は新しい一時的にするために、モジュラー分裂を使いたいと言います列は後で面取りします。

DF$A %% 4 
1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 

この列をデータフレームに貼り付けることができます。しかし、データを変換できないという制限を課しましょう。 私はこのような何かを行うことができることを期待しているでしょう:

ggplot(DF)+geom_point(aes(x = B, y = C)) + facet_grid({A %% 4}~.) 

または

ggplot(DF)+geom_point(aes(x = B, y = C, group = A)) + facet_grid({A %% 4} ~ .) 

あるいは

ggplot(DF)+geom_point(aes(x = B, y = C)) + facet_grid(formula({A %% 4} ~.)) 

をしかし、それらはすべて

Error in layout_base(data, rows, drop = drop) : 
    At least one layer must contain all variables used for facetting 

エラーを返します誰でも見れますか? ggplot2がどのように動作し、なぜこれらの試みが失敗し、データを変換せずに希望の結果を得ることができるかを明らかにする方法で私に頼みますか?

答えて

1

プロットには1つのy値しかないのはなぜですか? mean(DF$A)は1つの値しか生成しないためです。

変換を行う場合は、stat_*関数を使用する必要があります。それはまさに彼らがやるべきことです。この場合

ggplot(DF, aes(x = B , y = A, group = B)) + 
    stat_summary(fun.y = 'mean', geom = 'point') 

または同等:私は非既存の列に面取り行う方法が表示されない

ggplot(DF, aes(x = B , y = A, group = B)) + 
    geom_point(stat = 'summary', fun.y = 'mean')