Matplot R 手动标记 x 轴

Matplot R manually labelling x-axis

我在标记 matplot x 轴行时遇到问题。所以我有 1388 个实例,但我希望我的 X 轴以日期序列的形式自定义标签。 我的 R 代码如下所示:

Dates <- seq(as.Date("2004/01/29"), as.Date("2009/07/31"), by = "quarter")

matplot(seq(1388), t(Alldata[1, ]), type = "l", 
    lwd = 1, lty = 1, col = 1:10, xlab = "Dates", ylab = "Strike", 
    main = paste("TEST"), xaxt='n')
axis(side = 1:23, at=1, labels = paste(Dates, 1:23))

谁能帮我把日期放到 x 轴上? 我试过使用与此相同的方法: 但它不起作用。 AllData 来自 excel 文件,其中第一个行数如下所示:

我认为您混淆了函数 axis 的工作方式。在下面的回答中,我将生成一个随机矩阵来替换我无法访问的 Alldata

Alldata <- t(as.matrix(rnorm(23)))

我们可以再次生成绘图:

matplot(seq(23),  Alldata[1, ], type = "l", 
        lwd = 1, lty = 1, col = 1:10, xlab = "Dates", 
        ylab = "Strike", main = paste("TEST"), xaxt='n')

现在,知道 axis 的参数是什么很重要。第一的 side 这实际上是绘制绘图的矩形的一侧。分别为bottom,left,top,right对应的数字1,2,3,4之一

您希望轴在底部,所以我们将其设置为 1。

接下来,at 参数用于确定应在何处绘制刻度线。因此,如果线上有 10 个点,并将此值设置为 1:10,它将在轴上的每个点绘制一个刻度线。如果将其设置为 c(2,4,6,8,10),它将在轴上每隔一个点绘制一个标记。在您的情况下,您已将其设置为 1,这将只绘制一个刻度。尽管由于 side 设置为 1:23 none 出现了。

labels 此参数将标记绘制的刻度。理想情况下,它应该是一个与 at 值长度相同的向量。您可以通过创建索引变量并将其用作 at 变量并对标签进行索引来确保它们的长度相同。

这让我们:

index <- c(1,7,14,21)
axis(side = 1, at = index, labels = paste(Dates, 1:23)[index])

我认为拥有完整的日期范围会显得混乱。但如果您愿意,可以删除索引并选择以下内容:

axis(side = 1, at = 1:23, labels = paste(Dates, 1:23))