1

我有三个文本文件,每个仅包含 4 列(每列有 477 个值)。我设法像这样绘制它们:绘制每个文本文件中的第一列并对其余列执行相同的操作(附图)。如您所见,x 轴显示为数字,但我需要将其显示为日期,因此我尝试指定所需的日期,但出现与长度相关的错误。我确信日期范围 03/09/2010 到 23/12/2012 的长度与值 477 相同。感谢任何帮助。

ref= read.table("D:\\AS_asc.txt", sep="",header=TRUE)
sour1 = read.table("D:\\rre.txt", sep="",header=TRUE) 
  sour2= read.table("D:\\re_asc.txt", sep="",header=TRUE)
  starttime <- strptime("20100903", "%Y%m%d")
   endtime <- strptime("20111223 ", "%Y%m%d")
     xrange <- c(starttime, endtime)
   columns <- paste0("X", 1:4)
   par(mfrow=c(2,2))
  lapply(
 columns,
  function(column)
  {

 plot(xrange,
   ref[[column]],

   ylab = "[[column]]",
  xlab = "[[column]]",
   col  = 2 , main = paste( column )
 )

points(sour1[[column]], col = 'green')
 points( sour2[[column]], col = 'blue')

 }
 )

我收到了这个错误:

 Error in xy.coords(x, y, xlabel, ylabel, log) : 
 'x' and 'y' lengths differ

我的数据样本:

        "X0" "X1" "X2" "X3" 
  0.0369809285234571 0.0222775883686665 0.031094652297596 0.0814025488998284 
4

1 回答 1

2

问题是这一行:xrange <- c(starttime, endtime). 这将创建一个只有两个日期的向量。您正在尝试将这两个日期与 477 个数据的向量相对应,因此会出现错误。解决方案是创建一个包含 477 个日期的序列来匹配数据。xrange <- seq(from=as.Date(starttime), to=as.Date(endtime), by=1)

我还修复了您points将日期向量包含为 x 的请求。

ref= data.frame(matrix(runif(477*4),ncol=4))    #dummy random data
sour1 = data.frame(matrix(runif(477*4),ncol=4)) #dummy random data
sour2= data.frame(matrix(runif(477*4),ncol=4))  #dummy random data
starttime <- strptime("20100903", "%Y%m%d")
endtime <- strptime("20111223 ", "%Y%m%d")
xrange <-  seq(from=as.Date(starttime), to=as.Date(endtime), by=1) #create date vector
columns <- paste0("X", 1:4)
par(mfrow=c(2,2))
lapply(
 columns,
  function(column)
  {
   plot(xrange,
   ref[[column]],

   ylab = "Unit of the y data",    #more descriptive label
   xlab = "Date",                   #more descriptive label
   col  = 2 , main = paste(column)
   )
points(xrange, sour1[[column]], col = 'green') #add date range
points(xrange, sour2[[column]], col = 'blue') #add date range
 }
)

在此处输入图像描述

于 2013-04-13T11:20:17.283 回答