Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to draw multiple line segment in ggplot

Tags:

r

ggplot2

#Input data
df1<- data.frame(Gradient=rep(c(0,5,10,15), each=5),
                 load=c(0,4.4,10.7,17,21.4),
                vo2max=c(28.0,28.2,31.0,32.0,34.6,41.0,41.1,45.4,48.8,50.5,56.3,57.0,
                         63.6,66.8,69.9,71.3,75.0,82.1,85.5,89.3))
head(df1)
sp<-ggplot(data=df1, aes(x=load, y=VO2max, group=Gradient)) +
  geom_line()+
  geom_point()
#Horizontal line segment
sp+geom_segment(aes(x=0,y=50,xend=25,yend=50))
sp+geom_segment(aes(x=0,y=60,xend=25,yend=60))``
sp+geom_segment(aes(x=0,y=75,xend=25,yend=75))

How to draw the three line segments in the same graph? I'm able to draw only one line segment at a time.

like image 391
Chera Maan Avatar asked Oct 24 '25 13:10

Chera Maan


2 Answers

Put the data into a data.frame:

line_df <- data.frame(
  x = 0,
  y = c(50, 60, 75),
  xend = 25,
  yend = c(50, 60, 75)
)

sp +
  geom_segment(
    data = line_df, 
    mapping = aes(x=x, y=y, xend=xend, yend=yend), 
    inherit.aes = FALSE
  )
like image 103
sindri_baldur Avatar answered Oct 26 '25 07:10

sindri_baldur


Just add them all together.

sp +
  geom_segment(aes(x=0,y=50,xend=25,yend=50)) +
  geom_segment(aes(x=0,y=60,xend=25,yend=60)) +
  geom_segment(aes(x=0,y=75,xend=25,yend=75))

enter image description here

like image 29
r2evans Avatar answered Oct 26 '25 09:10

r2evans



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!