geom_line仅连接水平线上的点而不是所有点

时间:2014-07-07 18:03:03

标签: r ggplot2 dataframe

我已经使用ggplot2在R中写了一些东西,并且不知道它为什么会像它一样。

如果我使用geom_pointgeom_line绘制数据,则应该通过这些点绘制线条。但它不是连接所有点,而是仅连接水平线上的那些点。我不知道如何处理这个问题。

这是代码的简单版本:

date<-c("2014-07-01","2014-07-02","2014-07-03",
    "2014-07-04","2014-07-05","2014-07-06",
    "2014-07-07")
mbR<- c(160,163,169,169,169,169,169)
mbL<-     c(166,166,166,166,NA, NA, NA)
mb<-data.frame(mbR,mbL)
mb<-data.frame(t(as.Date(date)),mb)
colnames(mb)<-c("Datum","R","L")
mb$Datum<-date

plot1<-ggplot(mb,aes(x=mb$Datum,y=mb$R))+
geom_point(data=mb,aes(x=mb$Datum,y=mb$R,color="R",size=2),
           group=mb$R,position="dodge")+
geom_line(data=mb,aes(y=mb$R,color="R",group=mb$R))+
geom_point(aes(y=mb$L,color="L",size=2),position="dodge")

plot1

我使用了群组,否则我无法绘制任何线条,但它仍然没有按照我的意图行事。

我希望你们能帮助我一点点。 :)这可能是一个小错误。

1 个答案:

答案 0 :(得分:4)

首先,将您的数据融化为长格式,然后绘制它。熔化数据中名为variable的列是类别(RL)。名为value的列存储RL的每个实例的数据值。我们在variable的调用中按ggplot对数据进行分组和着色,这为RL提供了单独的行/点。

此外,您只需要在ggplot的初始调用中提供数据框和列映射。它们会传到geom_pointgeom_line。此外,当您提供列名称时,您不需要(并且不应该)包含数据框的名称,因为您已经在{{1}中指定了数据框} data的参数。

ggplot

enter image description here