2016-08-23 6 views
2

ggplotを初めて使用しました。私はggplotの使い方を理解しようとしています。私はWickhamの本を読んでいて、マッピングの色と色の設定について私の頭を覆そうとしています。離散対連続の場合のマッピングと色の設定

A)ディスクリートケース ここに私がやったことだ:

library(dplyr) 
library(ggplot2) 
test<-filter(mpg,year==2008) 
    test<-test[1:10,] 
    grid <- data_frame(displ = seq(min(mpg$displ), max(mpg$displ), length = 50)) 
    mod <- loess(hwy ~ displ, data = mpg) 
    grid$hwy <- predict(mod, newdata = grid) 

a)は離散値を使用して、(AES(色= "XYZ")を使用)

ggplot(mpg,aes(displ,hwy)) + 
    geom_point() + 
    geom_text(data = test,aes(label=trans,color = "blue")) 

これだけラベル「青」の凡例を追加します。なぜこれが起こるのですか?

b)美色の外に色を供給= "青"。

ggplot(mpg,aes(displ,hwy)) + 
    geom_point() + 
    geom_text(data = test,aes(label=trans),color = "blue") 

これは機能し、色を「青色」に変更します。

B)連続場合

a)の使用(AES(色= "XYZ")) は、ここに私がやったことだ:離散場合のケースa)の場合と同様

ggplot(mpg,aes(displ,hwy)) + 
    geom_point() + 
    geom_line(data = grid, aes(colour = "green"),size=1.5) 

、これは、テキスト "緑"とピンクの線を追加します。

b)美学の外に色を供給してください。

ggplot(mpg,aes(displ,hwy)) + 
    geom_point() + 
    geom_line(data = grid, colour = "green",size=1.5) 

ここでは、行の色が「緑色」に変わり、ラベルが失われています。

私はaes(color = "xyz")の値を理解していません。ラベルを追加するだけです。ではない?なぜそれを使うのだろうか?

+1

短い答え: 'aes(color = 'xyz')'は使用しないでください。なぜそれを使用すべきでないのかを説明する以外に、それを使用する正当な理由はないと思います。 – Gregor

+1

@Gregor、 '' xyz ''が色の名前ではなくラベルであるなら、それを使うことができます。 'ggplot(mtcars、aes(mpg、disp))+ geom_point()+ geom_smooth(aes(color = 'これは黄色の関数です)')と同様です。 – Axeman

+2

はい、できます。私はそれが美学にうまくマッピングされていないレイヤーにラベルを付けるうまい方法だと思います。例えば、ggplot(mtcars、aes(mpg、disp))+ geom_point()+ geom_smooth(aes(color = "loess" ))+ geom_smooth(メソッド= 'lm'、aes(color = 'lm')) ' – Gregor

答えて

3

データ列またはデータ列の変換は、aes()になります。 aes(color = 'blue')を実行すると、データにはすべての行に文字列"blue"を持つ名前のない列があるかのようになります。

この文脈では、"blue"は色ではなく、単なる文字列です。 color = "green",color = "bleu"、またはcolor = "look at this long long label"(これらがaes()の場合)を使用すると、同じ結果(ラベルを除く)が得られます。

文字列は、値が1つしかない場合でも、係数に強制変換され、離散変数として扱われます。

あなたは一般的な規則に従わない場合、これは混乱することができます:aes()内の定数を入れていない - だけで、実際のデータ列にマッピングを置きます。

あなたは、連続した別個の色スケールについて混乱するようです。あなたが「連続的なケース」としてラベルを付けるものは、色に関しては依然として離散しています。 geom_pointまたはgeom_lineを使用すると、スムージングされたギオムまたはその他のgeom は、色を離散または連続にしません。離散的または連続的なカラースケールを選択する上で重要なのは、色にマップされたデータのタイプ(class)のみです。数値の場合、デフォルトのカラースケールは連続しています。数値でない場合は、デフォルトのカラースケールが離散します。

+1

私はこれに完全に同意します。しかし、追加するだけで、例は 'scale_color_identity()'で動作します。 – Axeman

関連する問題