如何指定实际的x轴值作为R中的x轴刻度

我正在创build一个R的情节,我不喜欢由R绘制的X轴值。

例如:

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

这在X轴上绘制了具有以下值的图表:

50, 100, 150, 200

但是,我想绘制variablesx中存储的10,20, 30 ... 200个值作为X轴值。 我已经搜遍了无数的博客和简短的手册 – 经过几个小时的search,最接近我find有用的是以下(总结)的指示:

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

我试了一下,结果绘图根本没有X轴值。 有人可能知道如何做到这一点? 我不敢相信以前从来没有人尝试过这样做。

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

以下是帮助页面示例之一,使用您的数据进行了修改:

选项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) 

这两个选项都产生相同的graphics:

在这里输入图像说明


PS。 既然你有大量的标签,你将不得不使用额外的参数来使文本适合情节。 我用las来旋转标签。

仔细看看?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可能无法写入所有的标签。使用窗口宽度,你会明白我的意思。


这很糟糕,你有这样的麻烦寻找文件! 你的search条件是什么? 尝试在Google中inputr axis ,您将获得的第一个链接是前面提到的Quick R页面 。 向下滚动到“轴”,你会得到一个非常好的小指南如何做到这一点。 你应该首先在那里检查任何阴谋问题,这将比等待SO回复更快。

希望这个编码能帮助你:)

 plot(x,y,xaxt = 'n') axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))