2017-08-14 8 views
1
私は現在、「Rグラフィッククックブック」のコードに取り組んでい

の設定、第3章:ggplot githubの上のユーザ「gaorongchao」によって提供されるよう、注意geom_segment、マッピングまたはxendを

を所与として

A)コード

install.packages(gcookbook) 
library(gcookbook) 
tophit <- tophitters2001[1:25, ] 
nameorder <- tophit$name[order(tophit$lg, tophit$avg)] 
tophit$name <- factor(tophit$name, levels=nameorder) 

ggplot(tophit, aes(x=avg, y=name)) + 
geom_segment(aes(yend=name), xend=0, colour="grey50") + 
geom_point(aes(colour=lg), size=3) + 
scale_colour_brewer(palette="Set1", limits=c("NL","AL")) + 
theme_bw() + 
theme(panel.grid.major.y = element_blank(), 
     legend.position=c(1, 0.55), 
     legend.justification=c(1, 0.5))  

B)は、それからたxendは注意geom_segmentにAESマッピングの一部()である

ggplot(tophit, aes(x=avg, y=name)) + 
geom_segment(aes(xend=0, yend=name), colour="grey50") + 
geom_point(aes(colour=lg), size=3) + 
scale_colour_brewer(palette="Set1", limits=c("NL","AL")) + 
theme_bw() + 
theme(panel.grid.major.y = element_blank(), 
     legend.position=c(1, 0.55), 
     legend.justification=c(1, 0.5)) 

的変化を試みました。 B)は、別の縮尺の別のグラフィックにつながります.xend = 0は明示的にx縮尺の一部です。何とかAとBのコードの違いの背後に体系的に説明できますか? xendはエースの一部であり、エースの一部ではない。違いはなんですか?ありがとう

答えて

3

aes()の内部のデータフレームに美的マッピングを設定する必要があります - aes()の中にのみggplotは、あなたのデータフレームフォームの列名を調べることを知っています。あなたのxend = 0、またはcolor = "red"あなたが赤のすべてのポイントを色付けしたい場合などの

定数は、aes()内で設定することができますが、一般的にaes()の外にそれらを設定することが好ましいです。色のようなものの場合、これは自動的に凡例を作成しません(通常は1つの色しかない場合は、色の凡例は必要ありません)。同様に、あなたの例では、xend = 0aes()の内側に置くことが、 "明示的にスケールの一部"になることが分かりました。定数aes内部の設定

aes外でちょっと、ちょうどこれを行う」ggplot指示しますが、データフレームに追加することを心配しないでください、あなたのデータフレームにその列を追加し、それをマッピングと同等ですか、伝説か何か "。

関連する問題