Add geom_segment to geom_point plot in ggplot

2019-08-09 00:46发布

问题:

How can I add a geom_segment to my geom_point plot so that there is line from x-axis to the point?

Here is my dummy code:

library(grid);library(gridExtra);library(dplyr);library(ggplot2)

## Data
group1 <- seq(1, 10, 2); group2 <-  seq(1, 20, 3)
x = c(group1, group2)
mydf <- data.frame (X =x , Y = rnorm (length (x),5,1), 
                    groups = c(rep(1, length (group1)), rep(2, length(group2))))

## Plots
p1 <- ggplot(data=mydf[mydf$groups==1,],aes(x=X,y=Y))+
  geom_point(size=2)+
  theme_bw()

p2 <- ggplot(data=mydf[mydf$groups==2,],aes(x=X,y=Y))+
  geom_point(size=2)+
  theme_bw()

## Facetting
summ <- mydf %>% group_by(groups) %>% summarize(len=diff(range(X)))
summ$p <- summ$len/max(summ$len)
summ$q <- 1-summ$p

ng <- nullGrob()
grid.arrange(arrangeGrob(p1,ng,widths=summ[1,3:4]),
             arrangeGrob(p2,ng,widths=summ[2,3:4]))

And my plot:

Thanks

Bade

回答1:

From ?geom_segment we see the requried aesthetics are x, xend, y, yend, so we can use

ggplot(data=mydf[mydf$groups==1,],aes(x=X,y=Y))+
  geom_point(size=2)+
  theme_bw() +
  geom_segment(aes(x=X, y=-Inf, xend=X, yend = Y))


标签: r plot ggplot2