R:绘制日期时查找刻度线的位置

标签 r datetime plot

我正在运行一个 R 脚本,该脚本使用 plot 绘制随时间变化的数据,一些数据取自 as.Date。然后我添加使用 grid 来添加这样的指南:

plot(as.Date(data[["Date"]]), -data[["dbns"]], lwd=1, col = colours[i], type="l",ylim=ylimit, xlim=xlimit, xlab="", ylab =ylabel)

grid(NULL,NULL,lwd=1)

下面是一个例子(实际上这个例子是在这个图循环 3 次以添加每一行之后)

output from print statement with date

我遇到的问题是用 grid 添加的指南与 plot 添加的默认刻度线不一致。 plot 函数默认每 10 年添加一次刻度,这正是我想要的。查看 axTicks(1) 会得到 0 5000 10000 15000,这是 1970 年 1 月 1 日之后以天数为单位的指南位置。

有没有办法找出已添加的刻度线的位置?更重要的是,是否有办法设置指南以匹配这些位置?

我意识到对于这个例子,刻度是 [0, 365.25*10, 365.25*20 etc.] 但是解决一般情况的答案会很好。

谢谢

日本

编辑:

这是一个可重现的示例,可以准确说明我的意思。

data <- read.csv("test.csv"), header =TRUE)
data[["Date"]] <- as.Date(data[["Date"]], format = "%d/%m/%Y")

data<-data[order(as.Date(data$Date)),]


plot(as.Date(data[["Date"]]), -data[["dbns"]], type="l", xlim=xlimit)
grid(NULL,NULL,lwd=3)

文件 test.csv 看起来像这样(实际数据的提取)

bore    Date    dbns
42230210A   20/01/2009  13.13
42230210A   8/05/2009   13.21
42230210A   18/06/2009  13.19
42230210A   3/08/2009   13.2
42230210A   2/09/2009   13.25
42230210A   1/10/2009   13.3
42230210A   3/12/2009   13.32
42230210A   24/02/2010  13.3
42230210A   18/05/2010  13.3
42230210A   25/04/2012  11.45
42230210A   27/09/1966  11.18
42230210A   28/10/1969  11.14
42230210A   6/01/1970   11.03
42230210A   5/06/1973   10.68
42230210A   28/08/1973  10.63
42230210A   2/10/1973   10.73
42230210A   4/12/1973   10.7
42230210A   20/02/1980  11.39
42230210A   29/04/1980  11.45
42230210A   27/08/1980  11.45
42230210A   22/06/1988  11.14
42230210A   27/02/1996  11.78
42230210A   6/08/1996   11.68
42230210A   8/02/2000   11.64
42230210A   8/06/2000   11.71
42230210A   7/09/2000   11.75
42230210A   15/07/2008  13.01

其输出如下。指南偏离了刻度线?

enter image description here

最佳答案

因此检查 ?grid 表明正在发生的事情是它根据“默认”刻度线位置放置网格线,但是由于您绘制了日期对象,R 没有使用“默认”(在将日期视为数字变量的意义上)放置刻度线。

文档进一步指出,如果您需要更精细的控制,您应该使用abline 直接放置它们。

所以你可能想这样做:

plot(as.Date(data[["Date"]]), -data[["dbns"]], type="l")
grid(NA,NULL,lwd=3)
v <- as.numeric(as.Date(paste0(c(1970,1980,1990,2000,2010),'-01-01')))
abline(v = v,lty = "dotted",col = "lightgray",lwd = 3)

关于R:绘制日期时查找刻度线的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18201759/

相关文章:

使用 Julia 绘制相关矩阵的热图

matlab - 当用线条覆盖时,图像逐渐消失

24小时内SQL获取

c# - 插入mysql日期时间

python - 如何将字符串转换为日期时间?

r - 分类变量(因子)与虚拟变量的区别

python - 对于 Matplotlib 图,如何隐藏刻度线但保留刻度标签?

r - ggplot 散点图和线条

r - StringsR - 捕获正确的数字

r - 如何在 corrplot 中更改配色方案