web-dev-qa-db-ja.com

R:x軸を基準にして点を広げる(ジッター)方法は?

Rには次のコードスニペットがあります。

dat <- data.frame(cond = factor(rep("A",10)), 
                  rating = c(1,2,3,4,6,6,7,8,9,10))
ggplot(dat, aes(x=cond, y=rating)) +
  geom_boxplot() + 
  guides(fill=FALSE) +
  geom_point(aes(y=3)) +
  geom_point(aes(y=3)) +
  geom_point(aes(y=5))

この特定のコードスニペットは、1つのポイントが別のポイントを通過する箱ひげ図を生成します(上記の場合、1つのポイント3が別のポイント3を通過します)。

ポイント3を移動して、ポイントがy軸上の同じ位置に留まるようにするにはどうすればよいですか?しかし、x軸上で左または右に少し移動しますか?

12
chao

これは、position_jitter 関数:

geom_point(aes(y=3), position = position_jitter(w = 0.1, h = 0))

pdate:提供された3つのポイントのみをプロットするには、新しいデータセットを作成してプロットします。

points_dat <- data.frame(cond = factor(rep("A", 3)), rating = c(3, 3, 5))                  
ggplot(dat, aes(x=cond, y=rating)) +
  geom_boxplot() + 
  guides(fill=FALSE) +
  geom_point(aes(x=cond, y=rating), data = points_dat, position = position_jitter(w = 0.05, h = 0)) 
14
Lars Lau Raket

_ggplot2_にposition_dodge()が含まれるようになりました。ヘルプの説明から:「覆い焼きは、水平位置を調整する間、geomの垂直位置を保持します。 "

したがって、それをgeom_point(position = position_dodge(0.5))として使用するか、線で接続されているポイントを回避するために両方のジオメトリで同じになるように回避する必要がある場合は、次のようなものを使用できます。

_dat <- data.frame(cond = rep(c("A", "B"), each=10), x=rep(1:10, 2), y=rnorm(20))
dodge <- position_dodge(.3) # how much jitter on the x-axis?
ggplot(dat, aes(x, y, group=cond, color=cond)) + 
  geom_line(position = dodge) + 
  geom_point(position = dodge)
_
4
Florian