我有三个文本文件,每个文件只包含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
答案 0 :(得分: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
}
)