0

我正在尝试在我工作的河流上绘制估计和实际深度值。似乎估计和实际重叠的时间段,估计没有正确输出,即使我的估计值直到 2012 年 9 月(图表上的结束时间)

library(ggplot2)
library(scales)
LowerHydro<-data.frame(LowerHydrology)
LowerHydro$date <- as.Date(LowerHydro$Date, format = "%m/%d/%y")
LowerHydro<-rename(LowerHydro,c(Clarks.Lower..m.="Depth"))
qplot(main="Lower Clarks Hydrograph",xlab="Date",ylab="Depth(m)",
      date,Depth,data=LowerHydro,group=Group,color=Group,geom="line") + 
   geom_line(lwd=0.70) + 
   scale_x_date(labels=date_format("%b-%y"),
                breaks="60 days",
                limits = as.Date(c("2010-10-01","2012-09-12")),
                expand=c(0.01,0)) + 
   theme_bw()+
   labs(colour="") + 
   scale_y_continuous(expand=c(0.03,0),
                      limits=c(4,20),
                      breaks=seq(4,20,by=2),
                      labels=seq(4,20,by=2)) + 
   theme(axis.title.x=element_text(face='bold',size=16,vjust=-2)) + 
   theme(axis.title.y=element_text(face='bold',size=16,angle = 90,vjust=-0.2,hjust=0.5)) + 
   theme(plot.title=element_text(face='bold',size=25,vjust=2)) + 
   theme(axis.text.x=element_text(size=12)) + 
   theme(axis.text.y=element_text(size=12)) + 
   theme(legend.title=element_text(size=16,hjust=-0.2)) + 
   theme(legend.text=element_text(size=16)) + 
   theme(legend.key.size=unit(c(1.15,1.15),"lines")) + 
   scale_color_manual(values=c("Estimated"="black", "Actual"="blue")) + 
   theme(plot.margin = unit(c(1,-5,2,2),"lines"))

str(LowerHydro)
data.frame':    1053 obs. of  4 variables:
$ Date : Factor w/ 1053 levels "01/01/11","01/01/12",..: 561 563 565 567 569 571 572   574 576 578 ...
$ Depth: num  5.24 5.14 5.42 5.27 5.27 ...
$ Group: Factor w/ 2 levels "Actual","Estimated": 2 2 2 2 2 2 2 2 2 2 ...
$ date : Date, format: "2010-10-01" "2010-10-02" ...

with(LowerHydro, LowerHydro[date %in% seq.Date(as.Date("2012-01-01"),   as.Date("2012-01-10"), by='1 day'),])
     Date Clarks.Lower..m.     Group
457  1/1/2012           11.242 Estimated
458  1/2/2012           11.054 Estimated
459  1/3/2012           11.054 Estimated
460  1/4/2012           10.992 Estimated
461  1/5/2012           10.773 Estimated
462  1/6/2012            9.959 Estimated
463  1/7/2012            8.739 Estimated
464  1/8/2012            7.676 Estimated
465  1/9/2012            7.019 Estimated
466 1/10/2012            6.581 Estimated

很抱歉 qplot 上的代码繁琐......它的所有美学......但它似乎不喜欢我在 2011 年 10 月之后的同一日期范围内拥有实际值和估计值。我无法发布图像,但基本上我具有整个日期范围的估计值,但在它们与实际值重合后,估计线在时间范围结束之前只是略微倾斜的平坦线。

这是图表的链接:

http://s1358.beta.photobucket.com/user/jaredmilitello/media/Rplot01_zps9b29f6d3.png.html

如果我编辑此代码以在 2011-10-07 法案中创建第一个日期,而不是像最初那样为 2011-07-10,我会收到一个错误...本质上,此代码是我的数据集,没有随机深度。

> act <- data.frame(date=seq.Date(as.Date('2011-10-07'),
                             as.Date('2012-09-12'),
                             by='1 day'),
              Depth=rnorm(n=431, sd=100),
              Group="Actual")
Error in data.frame(date = seq.Date(as.Date("2011-10-07"), as.Date("2012-09-12"),  : 
arguments imply differing number of rows: 342, 431, 1
> est <- data.frame(date=seq.Date(as.Date('2010-10-01'),
                           as.Date('2012-09-12'),
                           by='1 day'),
             Depth=rnorm(n=713, sd=100),
              Group="Estimate") 
> LowerHydro <- rbind(act, est)
> str(df)
function (x, df1, df2, ncp, log = FALSE)   
> qplot(date, Depth, data=LowerHydro, colour=Group, geom="line")
4

2 回答 2

4

正如评论已经指出的那样,在不了解您的数据的情况下,我们无法为您提供很好的帮助。

您的数据一定有问题,因为绘制两条具有重叠时间段的线没有问题:

act <- data.frame(date=seq.Date(as.Date('2011-07-10'),
                                as.Date('2012-09-12'),
                                by='1 day'),
                  Depth=rnorm(n=431, sd=100),
                  Group="Actual")
est <- data.frame(date=seq.Date(as.Date('2010-10-01'),
                                as.Date('2012-09-12'),
                                by='1 day'),
                  Depth=rnorm(n=713, sd=100),
                  Group="Estimate")

LowerHydro <- rbind(act, est)
str(df)

qplot(date, Depth, data=LowerHydro, colour=Group, geom="line")

在此处输入图像描述

如果您需要帮助,请让您的问题可重现(请参阅评论中的链接)并提供有关您数据的所有相关详细信息。

此外,在基本情节正常运行之前,不要为您对情节所做的所有调整而烦恼(请注意,它们不是某种意义上的美学)。ggplot2至少不要把所有不相关的东西都放在你的问题中。


编辑

在查看您的实际数据后,问题很快就会变得明显。如果你整理你的情节而不担心它的外观,那么你应该避免在未来遇到这样的问题。

这就是我只运行原版时会发生的情况qplot

qplot(date, Depth, data=LowerHydro, group=Group, color=Group, geom="line")

在此处输入图像描述

很明显,估计组的日期被填满了——在实际测量开始后,估计组跳到未来大约十年。

现在,至于为什么会发生这种情况,您必须回到转换Datedate. 您使用format="%m/%d/%Y",这会很棒,但不一致。对于大约 2011 年 10 月 4 日之后的日期,格式从 更改%m/%d/%y%m/%d/%Y(即 10/01/11 到 10/01/2011)。

为避免将来发生这种情况:

  1. 检查您的数据,并查看格式是否一致。
  2. 进行这样的转换后检查您的数据。
  3. 在你开始担心它的外观之前先整理好你的情节
  4. 将最小的示例发布到 stackoverflow,这样每个人都不会看错东西,不会给你投反对票,也不会有兴趣帮忙。
于 2013-02-27T23:14:21.257 回答
1

这是我尝试过的。

我生成了一些样本数据来尝试你的情节:

library(package=ggplot2)
library(package=scales)

LowerHydro <- data.frame(date=seq.Date(as.Date('2010-10-01'),
                                       as.Date('2012-09-12'),
                                       by='1 day'),
                         Depth=rnorm(n=713, sd=100),
                         Group=c(rep('Estimated', 363),
                                 rep('Actual', 350)))

并绘制它(一个简化的情节,请注意)

qplot(date, Depth, data=LowerHydro, group=Group, color=Group, geom="line")+
    scale_x_date(labels=date_format("%b-%y"),breaks="60 days",
                 limits = as.Date(c("2010-10-01","2012-09-12")),
                 expand=c(0.01,0))+theme_bw()

一切似乎都如预期的那样。

现在,我在末尾添加了一个错误标记的日期(最后一个日期包含实际和估计数据的数据)

LowerHydro <- rbind(LowerHydro, data.frame(date=as.Date('2012-09-12'),
                             Depth=rnorm(n=1, sd=100),
                             Group='Estimated'))

然后剧情中断

qplot(date, Depth, data=LowerHydro, group=Group, color=Group, geom="line")+
    scale_x_date(labels=date_format("%b-%y"),breaks="60 days",
                 limits = as.Date(c("2010-10-01","2012-09-12")),
                 expand=c(0.01,0))+theme_bw()

您是否检查了每个估计数据和实际数据中的日期范围?

于 2013-02-27T22:37:27.370 回答