Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:x轴上显示的时间/axis.POSIXct()函数_R_Datetime_Plot_Axis Labels - Fatal编程技术网

R:x轴上显示的时间/axis.POSIXct()函数

R:x轴上显示的时间/axis.POSIXct()函数,r,datetime,plot,axis-labels,R,Datetime,Plot,Axis Labels,我对R非常陌生,并尝试开始绘制数据。但是我没有把x轴按正确的顺序排列。它应该是一个显示小时的时间轴,从00:00到23:59开始,每小时有一个刻度。我尝试了axis.POSIXct()函数,但没有成功。 我真的很感激你的帮助。提前非常感谢 绘图代码为: 绘图(V40VH_20171115_ACI$文件名,V40VH_20171115_ACI$平均值,轴=FALSE,ylab=“ACI”,xlab=“Hour”) 轴(2,标签=真) box() 用于其他功能的代码: axis.POSIXct(1,

我对R非常陌生,并尝试开始绘制数据。但是我没有把x轴按正确的顺序排列。它应该是一个显示小时的时间轴,从00:00到23:59开始,每小时有一个刻度。我尝试了
axis.POSIXct()
函数,但没有成功。 我真的很感激你的帮助。提前非常感谢

绘图代码为:

绘图(V40VH_20171115_ACI$文件名,V40VH_20171115_ACI$平均值,轴=FALSE,ylab=“ACI”,xlab=“Hour”)
轴(2,标签=真)
box()

用于其他功能的代码:

axis.POSIXct(1,at=seq(from=as.POSIXct(strtime(“00:00:00”,format=“%H:%M:%S”)),to=as.POSIXct(strtime(“23:59:59”,format=“%H:%M:%S”)),by=3600))

R没有显示错误,但是函数也没有改变任何东西

当前绘图如下所示

dput的输出(液滴液位(压头(V40VH\u 20171115\u ACI))


添加数据示例后,主要问题显而易见。您的x变量不是日期时间变量。你需要对它进行预处理。您还需要确保轴中指定的断点与数据的日期相同

#extract datetime information:
V40VH_20171115_ACI$FILENAME <- substr(V40VH_20171115_ACI$FILENAME, 23, 47) 
#replace last underscore with dot
#read help("regex") and some regex tutorials to understand this
#see https://regexr.com/3psl6 for an explanation
V40VH_20171115_ACI$FILENAME <- gsub("_(?=\\d+$)", ".", 
                                    V40VH_20171115_ACI$FILENAME, perl = TRUE) 
#coerce to POSIXct with subsecond precision
V40VH_20171115_ACI$FILENAME <- as.POSIXct(V40VH_20171115_ACI$FILENAME, 
                                          format = "%Y-%m-%d_%H-%M-%OS", tz = "GMT")

#calculate breaks
start <- trunc(min(V40VH_20171115_ACI$FILENAME), "secs") #see help("round.POSIXt") for trunc options
                                                         #you probably want "days"
breaks <- seq(start, length.out = 10, by = 0.001) #adjust as needed

plot(V40VH_20171115_ACI$FILENAME, V40VH_20171115_ACI$MEAN, 
     axes = FALSE, ylab = "ACI", xlab = "Hour")
axis(2, labels = TRUE)
axis.POSIXct(1, at=breaks, format = "%H:%M:%OS3") #you probably want %H:%M
#提取日期时间信息:

V40VH_20171115_ACI$FILENAME我可以分享我的改编版本,现在它运行得很好

#ACI
V40VH_20171114_ACI$TIME <- seq(from=as.POSIXct(strptime("2017-11-14 00:00:00", format = "%Y-%m-%d %H:%M:%S")), to=as.POSIXct(strptime("2017-11-14 23:59:00", format = "%Y-%m-%d %H:%M:%S")), by=60)
plot(V40VH_20171114_ACI$TIME, V40VH_20171114_ACI$MEAN, axes = FALSE, ylab = "ACI", xlab = "Hour", pch = 16, cex = 0.05)
axis(2, labels = TRUE)
axis.POSIXct(1, at=seq(from=as.POSIXct(strptime("2017-11-14 00:00:00", format = "%Y-%m-%d %H:%M:%S")), to=as.POSIXct(strptime("2017-11-14 24:00:00", format = "%Y-%m-%d %H:%M:%S")), by = 3600))
box()
#ACI

V40VH_20171114_ACI$时间如果您不显示代码(在最小可复制示例中),我们无法告诉您错误所在以及如何修复。请阅读并相应改进您的帖子。似乎我无法编辑自己的问题。绘图代码为:plot(V40VH_20171115_ACI$FILENAME,V40VH_20171115_ACI$MEAN,axes=FALSE,ylab=“ACI”,xlab=“Hour”)axis(2,labels=TRUE)box()用于其他函数的代码为:axis.POSIXct(1,at=seq(from=as.POSIXct(strtime(“00:00:00”,format=“%H:%M:%S”)),to=as.POSIXct(strtime(“23:59:59”,format=“%H:%S”)),by=3600)R没有显示错误,但函数也没有任何更改我很确定您可以编辑自己的问题。此评论线程上方有一个编辑链接。是,抱歉。现在我明白了,我将把它添加到上面的问题中。那么它是可读的datetime总是由日期和时间组成,POSIXct是datetime类。您传递给axis的内容(请检查)可能与数据的日期不同,因为如果您不指定,则会添加当前日期。
strtime
。非常感谢!我想我现在明白了数据和绘图的问题所在。我会试试你的解决办法。非常感谢。我对您的解决方案进行了一些调整,以便我可以用几个小时来标记x轴,如果您感兴趣,请参阅下面的答案
#ACI
V40VH_20171114_ACI$TIME <- seq(from=as.POSIXct(strptime("2017-11-14 00:00:00", format = "%Y-%m-%d %H:%M:%S")), to=as.POSIXct(strptime("2017-11-14 23:59:00", format = "%Y-%m-%d %H:%M:%S")), by=60)
plot(V40VH_20171114_ACI$TIME, V40VH_20171114_ACI$MEAN, axes = FALSE, ylab = "ACI", xlab = "Hour", pch = 16, cex = 0.05)
axis(2, labels = TRUE)
axis.POSIXct(1, at=seq(from=as.POSIXct(strptime("2017-11-14 00:00:00", format = "%Y-%m-%d %H:%M:%S")), to=as.POSIXct(strptime("2017-11-14 24:00:00", format = "%Y-%m-%d %H:%M:%S")), by = 3600))
box()