2013-12-09 36 views
0

我想连接我的情节点,并试图geom_point() + geom_line()但它不会工作。点和线不会连接

下面的代码只是它的点。有没有人有任何想法为什么geom_line()不添加任何行?

DensityE = read.csv("DensityElk.csv", header = TRUE) 
str(DensityE) 

DensityE$Date <- factor(DensityE$Date, levels= 
     c("20-May","3-Jun", 
     "17-Jun","1-Jul","16-Jul", 
     "22-Jul", "15-Aug"), order=TRUE) 

ggplot(data=DensityE, aes(Date,Density)) + 
geom_point(aes(shape = factor(Genus)), size = 4, 
position="jitter") + 
theme_bw() + xlab("Date") + 
ylab("Density per m2") + ggtitle("COP 1992") + 
opts(legend.key = theme_blank()) + 
opts (legend.title = theme_blank())+ 
opts(legend.text = theme_text(size=9)) 
+2

请添加[再现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-可再现-例子)。 DensityElk.csv是什么样的? – zx8754

+0

嗨,所述数据的子集是:1-JUL \t Epeorus \t 3.5 16-JUL \t Epeorus \t 3.25 22-JUL \t Epeorus 3君\t Rhyacophila 17君\t Rhyacophila \t 0.75 – user3073118

+0

非常感谢你的帮助!我曾尝试使用堆栈流程中的代码,但没有任何工作。 – user3073118

回答

3

因为你使用的x轴的因素(Date),ggplot2不会自动连接跨x值的行。有两种解决方案:(1)geom_line(aes(group=Genus))或(2)geom_line(aes(x=as.numeric(Date)))

构造数据帧:

DensityE <- data.frame(
    Date=c("1-Jul","16-Jul","22-Jul","3-Jun","17-Jun"), 
    Genus=c("Epeorus","Epeorus","Epeorus","Rhyacophila","Rhyacophila"), 
    Density=c(3.5,3.25,1,1,0.75)) 

制作的情节:我已经作出了一些改动

  • 改变theme_blankelement_blankopttheme与最近ggplot2版本一致
  • 删除抖动 - 如果你wan t抖动连接相同点的点和线,您必须手动将抖动添加到y值。

代码:

library(ggplot2) 
ggplot(data=DensityE, aes(Date,Density)) + 
    geom_point(aes(shape = factor(Genus)), size = 4)+ 
    geom_line(aes(group=Genus))+ 
theme_bw() + xlab("Date") + 
ylab("Density per m2") + ggtitle("COP 1992") + 
theme(legend.key = element_blank()) + 
theme(legend.title = element_blank())+ 
theme(legend.text = element_text(size=9)) 

enter image description here

+0

嗨,不幸的是它仍然没有工作。我附上了数据集的样本,包括日期,种类和密度。我仍然无法弄清楚如何让它起作用。谢谢你的帮助! – user3073118

+0

1月\t Epeorus \t 3.5 16月\t Epeorus \t 3.25 22月\t Epeorus 3军\t Rhyacophila 17军\t Rhyacophila \t 0.75 – user3073118

+0

谢谢!那是行得通的,但仅限于我给你的数据子集。不幸的是,我的数据绵羊非常大,当我使用整个数据集的代码时,它不起作用。对不起,我真的很陌生并且很挣扎。有没有一种方法可以使用我的大数据集,或者我必须为整个事情制作数据框?将会有大约300个密度测量,日期和属性。 – user3073118