2012-09-03 156 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