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

Hom*_*lli 56 plot r

我在R中创建一个图,我不喜欢由R绘制的x轴值.

例如:

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

plot(x,y)
Run Code Online (Sandbox Code Playgroud)

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

50, 100, 150, 200

但是,我想将10,20, 30 ... 200存储在变量x中的20个值绘制为X轴值.我已经浏览了无数的博客和简洁的手册 - 经过几个小时的搜索,我最接近发现任何有用的东西是以下(摘要)说明:

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

我尝试了它,结果绘图根本没有x轴值.是否有人可以知道如何做到这一点?我无法相信以前没有人试过这样做过.

And*_*rie 83

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

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

选项1:用于xaxp定义轴标签

plot(x,y, xaxt="n")
axis(1, xaxp=c(10, 200, 19), las=2)
Run Code Online (Sandbox Code Playgroud)

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

plot(x,y, xaxt="n")
axis(1, at = seq(10, 200, by = 10), las=2)
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述


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


小智 7

希望这个编码对你有帮助:)

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

axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))
Run Code Online (Sandbox Code Playgroud)


nog*_*pes 5

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

"a logical value specifying whether (numerical) annotations are 
to be made at the tickmarks,"
Run Code Online (Sandbox Code Playgroud)

所以,只需将其更改为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)
Run Code Online (Sandbox Code Playgroud)

要小心,如果你不拉伸窗口宽度,那么R可能无法写入所有标签.用窗口宽度播放你会明白我的意思.


找到文档时遇到这样的麻烦太糟糕了!你的搜索条件是什么?尝试输入r axisGoogle,您将获得的第一个链接是我之前提到的Quick R页面.向下滚动到"Axes",你会得到一个关于如何做到这一点的非常好的小指南.你应该首先检查那里的任何绘图问题,它会比等待SO回复更快.

  • 小心.`T`并不总是为'TRUE`.最好指定`labels = TRUE`.此外,谷歌搜索结果将取决于您的搜索历史.有关如何搜索[tag:r]的提示,请参阅[how-to-search-for-r-materials](http://stackoverflow.com/questions/102056/how-to-search-for-r-材料) (2认同)