ggplot2: Dodge точек с категориальной осью и наложением точек - PullRequest
0 голосов
/ 30 октября 2018

Рассмотрим следующий график

d1 = data.frame(x=LETTERS[1:2],y=c(1.9,2.3))
d2 = data.frame(x=LETTERS[1:2],y=c(1.9,3))

ggplot(d1, aes(x=x,y=y)) + geom_point(data=d1, color="red") + 
              geom_point(data=d2, color="blue")

enter image description here

Цель состоит в том, чтобы уклониться от синего вправо, а красные точки от левого. Одним из способов было бы объединить два data.frames

d1$category=1
d2$category=2
d = rbind(d1,d2)
d$category = as.factor(d$category)
ggplot(d, aes(x=x,y=y, color=category)) +
     geom_point(data=d, position=position_dodge(0.3)) + 
      scale_color_manual(values=c("red","blue"))

enter image description here

Есть ли другое решение (решение, которое не требует объединения data.frames)?

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете использовать position_nudge():

library(ggplot2)

d1 <- data.frame(x = LETTERS[1:2], y = c(1.9, 2.3))
d2 <- data.frame(x = LETTERS[1:2], y = c(1.9, 3))

ggplot(d1, aes(x, y)) +
  geom_point(d1, color = "red", position = position_nudge(- 0.05)) +
  geom_point(d2, color = "blue", position = position_nudge(0.05))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...