2017-01-17 10 views
0

グループ化されたバーを持つggplotバープロットがあります。 x値には4つのバーがあり、バーの塗りつぶし、色、アルファはデータの変数によって決まります。私は、私の伝説が正確にプロットの棒の外観を反映するようにしたいと思います。残念ながら、私は私のプロットの絵を掲示するのに十分な評判を持っていますが、ここに私のコードではありません。ggplotの凡例をバーの外観に正確に反映させる方法

ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) + 
    geom_bar(position = "dodge", stat="identity") + 
    scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) + 
    scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) + 
    scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2")) 

これはバーのすべての周りのラインを作成しますが、どこのアルファラインが唯一の棒の周りを示し<です。プロットはアウトラインのない明るいバーとアウトラインのない暗いバーとして表示されます。 (これは、明るく暗いバーよりも見やすいことがわかりました。)これを伝える伝説が欲しいので、スピーカー1の凡例ボックスには対応するバーのようなアウトラインが表示されます。しかし、現在のところ、スピーカーの凡例は1の薄い灰色のボックスと2の濃い灰色のボックスを示しているだけで、ライトグレーボックスの周りにラインを追加する方法はわかりません。これを行う方法はありますか?私が得た最も近いものは、追加することでした。

theme(legend.key = element_rect(color = 'black', size = 0.5)) 

しかし、それはすべての凡例ボックスの周りに行を追加します。アルファ凡例の1つのボックスに追加する方法があるのでしょうか、それとも暗いボックスと一致するように線の色を設定できるアルファ凡例だけ(おそらく簡単です)ですか?私はいろいろな方法を試してきましたが、しばらくアイデアを探していて、適切な解決策を見つけていませんでした。 -

私のデータのサンプルを適切今回フォーマット:

structure(list(Type = structure(c(1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L), .Label = c("A", "B"), class = "factor"), Frame = structure(c(1L, 
2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("V CP", "V NP"), class = "factor"), 
prop_type = c(0.209513024, 0.138731597, 0.017167382, 0.387528402, 
0.437998087, 0.144086707, 0.042695836, 0.398376853), speaker = structure(c(1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L), .Label = c("Speaker1", "Speaker2" 
), class = "factor")), .Names = c("Type", "Frame", "prop_type", 
"speaker"), class = "data.frame", row.names = c(NA, -8L)) 
+2

を行うことができ、我々はあなたの写真を再作成することはできませんので、我々はあなたのデータall_frame_freqを持っていません。 'dput(all_frame_freq) 'と入力してデータを表示し、質問に出力を貼り付けてください – G5W

+0

私の悪い - ちょうど追加されました。 – Ed2122

+0

再現可能な例を示してください。「追加されたデータ」は再現できません。それについては、[こちら](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)をご覧ください。 –

答えて

1

[C]はurrentlyスピーカー凡例がちょうど1と2の 濃い灰色ボックスの淡い灰色のボックスを示しており、私はできません明るい灰色のボックスの場合のみ、 の周囲に行を追加する方法を見つけます。

あなたが知っている

ggplot(all_frame_freq, aes(x = Frame, y = prop_type, group = interaction(speaker,Type), fill = Type, color = Type, alpha = speaker)) + 
    geom_bar(position = "dodge", stat="identity") + 
    scale_fill_manual(values = c("#E41A1C","#377EB8"), name="Type", labels=c("A","B")) + 
    scale_color_manual(values = c("#E41A1C","#377EB8"), guide=FALSE) + 
    scale_alpha_manual(values = c(.2, 1), name="speaker", labels=c("1", "2")) + 
    guides(alpha = guide_legend(override.aes = list(color = c("red", NA)))) 

enter image description here

+0

これは、赤の代わりに黒に色を設定する場合、これが必要な場合とまったく同じです。 (また、私のプロットは積み重なった棒を持っていませんが、それは問題ではありません。)ある時点でoverride.aesを試しましたが、正しい構文を理解できませんでした。ありがとう! – Ed2122

関連する問題