2012-09-03 153 views
2

我的新ggplot2和不能找出如何繪製沿x軸的點/點之間垂直線與GGPLOT2

垂直點的灰線。這裏是我的示例代碼:

d1 <- runif(10,10,15) 

d2 <- runif(10,25,30) 

d3 <- rep(1:10,2) 

df <- data.frame(x = d3, y = c(d1,d2)) 

ggplot(df, aes(x=x, y=y)) + 

geom_point() 

回答

11

如果您的實際數據的結構與示例中使用的結構類似,只需將geom_line(aes(group = d3))添加到圖中即可。

ggplot(df, aes(x=x, y=y)) + 
geom_point() + geom_line(aes(group = d3)) 

enter image description here

+0

感謝您的解決方案!簡單,效果很好。也感謝其他解決方案,並澄清我只想在2點之間的線,而不是通過點的延伸! – user969113

0

肯定有比這更好的方式,但:

d1 <- runif(10,10,15) 
d2 <- runif(10,25,30) 
d3 <- rep(1:10,2) 
df <- data.frame(x = d3, y = c(d1,d2)) 
df$place <- rep(c("min", "max") , each=10) 

df_wide <- reshape(df, direction = "wide", v.names="y", timevar="place", idvar="x") 

ggplot(df, aes(x=x, y=y)) + 
    geom_segment(aes(x=x, xend=x, y=y.min, yend=y.max), 
     size=1, data=df_wide, colour="grey70", linetype="dotted") + 
    geom_point() 

雖然我不知道你的意思是「沿x軸」,也許你想它來擴展從上到下不僅在點之間。

+1

如果你是ggplot的新手,我會重新考慮這三個網站:a)http://had.co.nz/ggplot2/; b)http://had.co.nz/ggplot2/docs/; c)http://wiki.stdout.org/rcookbook/Graphs/ –

0

您應該使用geom_vline()做到這一點。

 d1 <- runif(10,10,15) 
     d2 <- runif(10,25,30) 
     d3 <- rep(1:10,2) 
     df <- data.frame(x = d3, y = c(d1,d2)) 
     ggplot(df, aes(x=x, y=y)) + geom_point() + 
geom_vline(xintercept = df$x, linetype= 3, colour = "#919191") 
+0

是應該延長點的線? (我自己並不確定) –

+0

我在猜測,所以我想出了這個解決方案。不清楚這個問題。 – Maiasaura