2017-01-17 13 views
0

ggplotにグループ化された棒グラフを作成しようとしていますが、x値ごとに4つの棒が必要です。私が欲しいもの2つのカテゴリ変数の組み合わせに基づくy値を持つggplotのグループ化バープロット?

Verb_Type,Frame,proportion_type,speaker 
mental,V CP,0.209513024,Child 
mental,V NP,0.138731597,Child 
perception,V CP,0.017167382,Child 
perception,V NP,0.387528402,Child 
mental,V CP,0.437998087,Parent 
mental,V NP,0.144086707,Parent 
perception,V CP,0.042695836,Parent 
perception,V NP,0.398376853,Parent 

両方Verb_Typeに基づいてyの値としてx値とproportion_typeとしてではなく、バーとフレームをプロットしていると:ここに私のデータのサブセットは、(実際のデータを約4倍長い)でありますスピーカー。したがって、各x値(フレーム)に対して、一緒にグループ化された4つのバーがあります - それぞれmental〜child、mental〜parent、perception〜child、perception〜parentに対応するproportion_type値のバー。私は、塗りつぶしの色をVerb_Typeに基づいて、スピーカーに基づいて塗りつぶし「テクスチャ」(彩度または何か)にする必要があります。私はではない積み重なった棒は、正確にデータを表していないので。

ファセットグリッドを使用したくないのは、2つのグループに分かれているときに4つのバーをすべて比較するのが視覚的に難しいためです。私はすべてのバーをグループ化して、視覚化が容易になるようにします。しかし、私は適切なグループ分けをする方法を理解することはできません。これはggplotでできることですか、プロットする前にデータを操作する必要がありますか?データを再形成するために溶湯を使用しようとしましたが、どちらかが間違っていたか、実際にやっていたことではありません。

答えて

0

df$Verb_Typedf$speakerの間でinteraction()(つまり、すべてのユニークなペアリングを取得)を探していると思います。あなたはggplotにこれを直接渡すか、事前に新しい変数を作ることができます。

ggplot(df, aes(x = Frame, y = proportion_type, 
       group = interaction(Verb_Type, speaker), fill = Verb_Type, alpha = speaker)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    scale_alpha_manual(values = c(.5, 1)) 

または:

df$grouper <- interaction(df$Verb_Type, df$speaker) 
ggplot(df, aes(x = Frame, y = proportion_type, 
       group = grouper, fill = Verb_Type, alpha = speaker)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    scale_alpha_manual(values = c(.5, 1)) 

enter image description here

+0

これは私が探していたまさにです!グループ= interaction()は私が必要としたものでした。ありがとうございました。 – Ed2122

+0

また、@ Nathan Day、フォローアップの質問:グループ内のバーを並べ替えることは可能ですか? Verb_Typeバーの各ペアは互いに隣り合っていますか? – Ed2122

+0

Nevermind - これを行うには、interaction()内の変数の順序を変更するだけです。 – Ed2122

関連する問題