2017-02-22 37 views
0

Я хочу подключить данные из двух наборов данных с вертикальной линией. Точки, которые должны быть связаны по вертикали, имеют один и тот же идентификатор (V), но я надеялся сохранить отдельные наборы данных.Соединительные точки из двух наборов данных с линиями в ggplot2 в R

Вот моя фигура до сих пор:

d1 <- data.frame (V = c("A", "B", "C", "D", "E", "F", "G", "H"), 
        O = c(9,2.5,7,8,7,6,7,7.5), 
        S = c(6,5,3,5,3,4,5,6)) 

d2 <- data.frame (V = c("A", "B", "C", "D"), 
       O = c(10,3,7.5,8.2), 
       S = c(6,5,3,5)) 

scaleFUN <- function(x) sprintf("%.0f", x) 
p<-ggplot(data=d1, aes(x=S, y=O), group=factor(V), shape=V) + 
geom_point(size = 5, aes(fill=V),pch=21, alpha = 0.35)+ 
theme_bw()+ 
geom_point(data = d2, size=5, aes(fill=V), pch=22,colour="black")+ 
theme(legend.title=element_blank())+ 
xlab(expression(italic("S"))) + theme(text = element_text(size=25))+ 
ylab(expression(italic("O")))+ theme(text = element_text(size=25))+ 
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ 
theme(axis.text.y=element_text(angle=90, hjust=1))+ 
theme(legend.position="none") # remove legend 

print(p) 

Так что окончательная цифра будет выглядеть примерно так: Figure Могу ли я сделать это с geom_line() без объединения наборов данных (так другое форматирование может быть отдельно для каждый набор данных)?

+1

Вы должны «объединить»: добавление 'geom_segment (data = merge (d1, d2, by = 'V'), aes (x = Sx, xend = Sy, y = Ox, yend = Oy))' на ваш сюжет может быть началом. – bouncyball

+0

Хорошо, что работает отлично! – lily23

ответ

0

Как bouncyball отметил, вы можете использовать отдельный набор данных (merge d от d1 и d2) с geom_segment.

Смотрите следующее:

ggplot(data = d1, aes(x = S, y = O), group = factor(V), shape = V) + 
    geom_point(size = 5, aes(fill = V), pch = 21, alpha = 0.35) + 
    geom_point(data = d2, size = 5, aes(fill = V), pch = 22, colour = "black") + 
    geom_segment(data = merge(d1, d2, by = 'V'), 
       aes(x = S.x, xend = S.y, y = O.x, yend = O.y)) + 
    guides(fill = FALSE) 

Что дает:

enter image description here

Вы можете добавить свои темы также.

 Смежные вопросы

  • Нет связанных вопросов^_^