10

group2 つの変数の相互作用に基づいてデータを作成したいのですが、美学をこれらの変数の 1 つにのみマッピングします。(他の変数は、理論的には互いに同等であるはずの複製を表します)。これを行うための非エレガントな方法を見つけることができますが、よりエレガントな方法があるはずです。

例えば

# Data frame with two continuous variables and two factors 
set.seed(0)
x <- rep(1:10, 4)
y <- c(rep(1:10, 2)+rnorm(20)/5, rep(6:15, 2) + rnorm(20)/5)
treatment <- gl(2, 20, 40, labels=letters[1:2])
replicate <- gl(2, 10, 40)
d <- data.frame(x=x, y=y, treatment=treatment, replicate=replicate)

ggplot(d, aes(x=x, y=y, colour=treatment, shape=replicate)) + 
  geom_point() + geom_line()

ここに画像の説明を入力

ポイントを異なる形状で表現したくないことを除いて、これはほぼ正しいです。group=interaction(treatment, replicate)役立つようです(たとえば、この質問に基づいていますが、geom_line()それでも異なるグループのポイントを接続しています:

ggplot(d, aes(x=x, y=y, colour=treatment, group=interaction("treatment", "replicate"))) + 
  geom_point() + geom_line()

ここに画像の説明を入力

インタラクション列を手動で作成し、それによって問題を解決できますgroup

d$interact <- interaction(d$replicate, d$treatment)

ggplot(d, aes(x=x, y=y, colour=treatment, group=interact)) + 
  geom_point() + geom_line()

ここに画像の説明を入力

しかし、同じグループのポイントのみを接続するためのよりggplot2ネイティブな方法があるはずです。geom_line

4

1 に答える 1

11

次のようにすると、コードが機能します。とをベクトルとしてaes扱ったため問題があったと思いますので、 と同等でした。"treat""replicate"group = 1

ggplot(d, aes(x=x, y=y, colour=treatment, group=interaction(treatment, replicate))) + 
  geom_point() + geom_line()
于 2013-09-03T18:25:54.337 に答える