2016-08-02 4 views
0

非常に単純な質問でしょうが、私はそれに答えを見つけることができませんでした。ggplot2を使った2つの異なる美学のユニークな伝説

4つの列を持つサンプルのデータセットを描画しましょう。私は同じプロット上に2つの異なる点をプロットしたいので、異なる美学を使って、それぞれの色に従って列の凡例を記述します。

library(ggplot2) 

set.seed(10) 
ex <- data.frame("a" = c(1:100), "b" = rnorm(100), 
       "c" = seq(50, 249, 2), "d" = rnorm(100)) 

plot_ex <- ggplot(ex, aes(a, b)) + 
    geom_point(colour = "dodgerblue", cex = 2) + 
    geom_point(aes(x = c, y = d), colour = "firebrick3", cex = 2) + 
    theme_classic() + 
    labs(x = "X axis", y = "Y axis") 

plot_ex 

私はscale_color_manual行を追加しようとしましたが、私はおそらくそれは間違ってコード化された:

plot_ex + 
    scale_color_manual(values = c("dodgerblue", "firebrick3"), label = c("first", "second"), name = "") 

答えて

0

私はggplotだけAESに何があるかに基づいて凡例を作成します信じています。したがって、色を各geom_pointの美学に移動し、scale_colour_manualでラベルを付け直すことができます。

plot_ex <- ggplot(ex) + 
    geom_point(aes(x = a, y = b,colour = "dodgerblue"),cex = 2) + 
    geom_point(aes(x = c, y = d,colour = "firebrick3"), cex = 2) + 
    theme_classic() + 
    labs(x = "X axis", y = "Y axis") 

plot_ex + 
    scale_colour_manual(values = c("dodgerblue", "firebrick3"), label = c("first", "second"), name = "") 
+0

これは確かに動作しますが、これは別の方法で進んでいるのだろうかと思います。ありがとう。 –

+0

これは悪い習慣です。良い方法は、データを長形式に溶かし、単一の 'geom_point'呼び出しを使用することです(この例は、aosmithの重複している提案にあります)。 – Gregor

+0

'aes'の中で' color = 'は明示的な色ではなくデータ値として解釈されることに注意してください。 'color =" dodgerblue "を' color = 'first''や 'color =' blah''に置き換えるだけでもいいでしょう。 – Gregor

関連する問題