我有这个csv格式的文件:
timestamp,pages
2011-12-09T11:20:50.33,4
2012-01-23T17:44:02.71,132
2012-01-28T15:07:59.34,168
Run Code Online (Sandbox Code Playgroud)
第一列是时间戳,第二列是页数.我需要在垂直轴上绘制页面计数,在水平轴上绘制时间戳.
时间戳不是有规律的间隔,我在十二月有一天,一月有两天.
我试过这段代码
df = read.csv("my_data.csv")
df$timestamp = strptime(df$timestamp, "%Y-%m-%dT%H:%M:%S")
plot(df$timestamp,df$pages)
Run Code Online (Sandbox Code Playgroud)
我得到了一个在x轴中间只有一个刻度并且带有标签"Jan"的情节:它没有错,但我希望有三个刻度,只有天数和月份.
我试过了
plot(df$timestamp,df$pages,xaxt="n")
axis.Date(1,df$timestamp,"days")
Run Code Online (Sandbox Code Playgroud)
但没有绘制x轴.任何的想法?谢谢
Pie*_*nte 13
我想as.Date()你timestamp喜欢这个:
df$timestamp = as.Date(strptime(df$timestamp, "%Y-%m-%dT%H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
这适用于:
plot(df$timestamp,df$pages,xaxt="n")
axis.Date(1,at=df$timestamp,labels=format(df$timestamp,"%b-%d"),las=2)
Run Code Online (Sandbox Code Playgroud)

Dr *_*r G 10
这将有效:
plot(df$timestamp,df$pages,xaxt="n")
axis.POSIXct(1, at=df$timestamp, labels=format(df$timestamp, "%m/%d"))
Run Code Online (Sandbox Code Playgroud)
基本上axis.POSIXct(注意POSIXct您的数据框中有日期),您可以指定轴刻度(at)的位置以及标签的位置.
通常我喜欢我的日期标签垂直而不是水平.要par(las=2)在情节之前使用它.
我发现了这个:http://personality-project.org/r/r.plottingdates.html
这给了我解决方案......
dm = read.csv("my_data.csv", sep=",", head=TRUE)
dm$DateTime <- as.POSIXct(dm$timestamp, format="%Y-%m-%dT%H:%M:%S")
daterange=c(as.POSIXlt(min(dm$DateTime)), as.POSIXlt(max(dm$DateTime)))
plot(pages ~ DateTime, dm, xaxt = "n")
axis.POSIXct(1, at=seq(daterange[1], daterange[2], by="day"), format="%b %d")
Run Code Online (Sandbox Code Playgroud)
重要的部分是daterange和at=seq(..., by="day").