48

この質問は、以前の質問とその回答の続きです。

最初のおもちゃのデータ:

df = read.table(text = 
"School      Year    Value 
 A           1998    5
 B           1999    10
 C           2000    15
 A           2000    7
 B           2001    15
 C           2002    20", sep = "", header = TRUE)

元の質問では、各学校の値年ラインをプロットする方法を尋ねました。答えは、以下の p1 と p2 に多かれ少なかれ対応しています。しかし、p3 も考慮してください。

library(ggplot2)

(p1 <- ggplot(data = df, aes(x = Year, y = Value, colour = School)) +       
   geom_line() + geom_point())

(p2 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +       
  geom_line(aes(group = School)) + geom_point())

(p3 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +       
  geom_line() + geom_point())

p1 と p2 の両方がジョブを実行します。p1 と p2 の違いは、p1 はYear数値として扱うのに対し、p2 はYear因数として扱うことです。また、p2 にはgroup美学が含まれていgeom_lineます。しかしgroup、p3のように美学を落とした場合、線は描かれません。

問題はgroup、x 軸変数が因子である場合に美学が必要であるのに、groupx 軸変数が数値である場合に美学が必要ないのはなぜですか?

ここに画像の説明を入力

4

1 に答える 1

52

ハドリー自身の言葉で:

[横軸に因子がある折れ線グラフの場合]重要なことは、グループ化を手動で指定することです。デフォルトでは、ggplot2 はプロット内のすべてのカテゴリ変数の組み合わせを使用して geom をグループ化します。これは、ポイントごとに個別の線を取得するため、このプロットでは機能しません。手動で group = 1 を指定すると、すべての点を結ぶ 1 本の線が必要になります。

ここでkoshkeが示すように、実際には非常に異なる方法でポイントをグループ化できます

于 2012-04-27T21:57:04.397 に答える