Weijia
Weijia

Reputation: 79

R ggplot vertical and horizontal line intercept at center

I have a regression line, called "mean". X-axis is called "week".

Now, I want to draw vertical and horizontal lines, from each point of the regression line, to x-axis and y-axis.

Here is my data:

 week    mean
1   0   0   
2   2   0   
3   3   0   
4   4   0   
5   5   0   
6   6   0   
7   7   0   
8   8   8   
9   9   30  
10  10  68  
11  11  121 
12  12  189 
13  13  272

Here is my code:

ggplot()+
geom_linerange(data=df2,x=df2$week, ymin=0, ymax=df2$mean, colour="#000000",size=0.1)+
geom_hline(data=df2, yintercept=df2[trunc(df2$week==30),"mean"],colour="#000000",size=0.1)

I have successfully draw the vertical line, using geom_linerange.

However, the geom_hline just won't work. R just doesn't draw anything.

I don't know, if geom_hline is the function I should use. I was trying to use geom_vline for the vertical line part, but it never worked, so I switched back to geom_linerange, and it worked perfectly.

Thanks for any help!!

Upvotes: 2

Views: 2377

Answers (1)

Roland
Roland

Reputation: 132706

Use geom_segment:

DF <- read.table(text=" week    mean
1   0   0   
2   2   0   
3   3   0   
4   4   0   
5   5   0   
6   6   0   
7   7   0   
8   8   8   
9   9   30  
10  10  68  
11  11  121 
12  12  189 
13  13  272", header=TRUE)


library(ggplot2)

p <- ggplot(DF, aes(x=week, y=mean)) +
  geom_segment(aes(xend=week, yend=0), color="blue") +
  geom_segment(aes(xend=0, yend=mean), color="blue") +
  geom_line() 

print(p)

enter image description here

Upvotes: 7

Related Questions