如何指定实际的 x 轴值作为 x 轴在 R 中滴答作图

我在 R 中创建了一个图,我不喜欢用 R 绘制 x 轴的值。

例如:

x <- seq(10,200,10)
y <- runif(x)


plot(x,y)

这将在 X 轴上绘制一个具有以下值的图形:

50, 100, 150, 200

但是,我想将变量 x 中存储的20个值 10,20, 30 ... 200作为 X 轴的值绘制出来。我浏览了无数的博客和简洁的手册——经过几个小时的搜索,我最接近找到任何有用的东西是以下(总结)说明:

  1. 调用 plot()par(),指定参数 xaxt='n'
  2. 呼叫 axis()例如 axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)

我试了一下,得到的图根本没有 x 轴值。有没有可能外面有人知道怎么做?真不敢相信从来没有人这么做过。

330451 次浏览

您可以在 ?axis的帮助页面中找到您的问题的答案。

下面是使用您的数据修改的帮助页面示例之一:

选项1: 使用 xaxp来定义轴标签

plot(x,y, xaxt="n")
axis(1, xaxp=c(10, 200, 19), las=2)

选项2: 使用 atseq()来定义标签:

plot(x,y, xaxt="n")
axis(1, at = seq(10, 200, by = 10), las=2)

这两种选择产生了相同的图形:

enter image description here


附言。因为您有大量的标签,所以必须使用额外的参数来使文本适合于情节。我使用 las来旋转标签。

仔细查看 ?axis文档。如果你看一下 labels参数的描述,你会发现它是:

"a logical value specifying whether (numerical) annotations are
to be made at the tickmarks,"

所以,只要把它改成真,你就会得到你的蜱标签。

x <- seq(10,200,10)
y <- runif(x)
plot(x,y,xaxt='n')
axis(side = 1, at = x,labels = T)
# Since TRUE is the default for labels, you can just use axis(side=1,at=x)

小心,如果不拉伸窗口宽度,那么 R 可能无法将所有标签写入。试试窗户的宽度,你就会明白我的意思了。


你找不到文件真是太糟糕了!你的搜索条件是什么?试着在 Google 中输入 r axis,你会得到的第一个链接是 我之前提到的快速 R 页面。向下滚动到“ Axes”,你会得到一个关于如何做的非常好的小指南。您可能应该首先检查那里是否有任何绘图问题,这将比等待 SO 回复更快。

希望这段代码可以帮助您:)

plot(x,y,xaxt = 'n')


axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))

在绘制时间序列的情况下,命令 ts.plot需要与 xaxt="n"不同的参数

require(graphics)
ts.plot(ldeaths, mdeaths, xlab="year", ylab="deaths", lty=c(1:2), gpars=list(xaxt="n"))
axis(1, at = seq(1974, 1980, by = 2))