【问题标题】:geom_line only connects points on horizontal lines instead all pointsgeom_line 只连接水平线上的点而不是所有点
【发布时间】:2014-07-07 18:03:03
【问题描述】:

我使用 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

我使用了组,否则我将无法绘制任何线条,但仍然无法达到我的预期。

希望大家能帮帮我。 :) 这可能是一个小故障。

【问题讨论】:

标签: r ggplot2 dataframe


【解决方案1】:

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

另外,您只需在对ggplot 的初始调用中提供数据框和列映射。他们将传递给geom_pointgeom_line。此外,当您提供列名时,您不需要(也不应该)包含数据框的名称,因为您已经在 data 参数中指定了数据框 ggplot

library(reshape2)
mb.l = melt(mb, id.var="Datum")

ggplot(data=mb.l, aes(x=Datum, y=value, group=variable, color=variable)) +
  geom_point(size=2) +
  geom_line() 

【讨论】:

  • 谢谢我不知道融化这帮助我很快:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 2019-03-14
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
相关资源
最近更新 更多