如何指定实际的x轴值,以在R中绘制为x轴刻度

时间:2012-08-02 10:32:36

标签: r plot

我在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)
  3. 我试过了,结果图根本没有x轴值。是否有人可以知道如何做到这一点?我无法相信以前没有人试过这样做过。

4 个答案:

答案 0 :(得分:80)

您可以在?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


PS。由于您有大量标签,因此您必须使用其他参数来使文本适合绘图。我使用las来旋转标签。

答案 1 :(得分:5)

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

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

所以,只需将其更改为true,即可获得刻度标签。

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,您将获得的第一个链接是Quick R page that I mentioned earlier。向下滚动到“Axes”,你会得到一个关于如何做到这一点的非常好的小指南。你应该首先检查一下是否有任何绘图问题,它会比等待SO回复更快。

答案 2 :(得分:2)

希望这个编码可以帮助你:)

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

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

答案 3 :(得分:0)

如果绘制时间序列,命令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))