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))
我在标记 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 轴上?
我试过使用与此相同的方法:
我认为您混淆了函数 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))