带有x时间轴的R图:如何强制刻度标签成为日子?

Ale*_*son 12 plot r

我有这个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)在情节之前使用它.


joz*_*yqk 5

我发现了这个: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)

重要的部分是daterangeat=seq(..., by="day").