2012-08-02 112 views
46

我建立R中的曲线图和我不喜欢由R.如何指定实际x轴的值来绘制为x轴蜱中的R

例如被描绘x轴值:

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

plot(x,y) 

这在X轴上标绘具有以下值的曲线图:

50, 100, 150, 200

然而,我要绘制的20个值10,20, 30 ... 200存储在variab le x,作为X轴值。我已经经历了无数的博客和简洁的手动冲刷 - 搜索了几个小时之后,最接近我是来寻找有用的东西是以下(总结)说明:

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

我试过了,结果图中根本没有x轴值。有人可能知道如何做到这一点吗?我无法相信以前从未有人试图这样做过。

回答

66

您可以在?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旋转标签。

5

仔细查看?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,您将获得的第一个链接是Quick R page that I mentioned earlier。向下滚动到“Axes”,你会得到一个非常好的指导如何做到这一点。你应该首先在那里检查任何阴谋问题,这将比等待SO回复更快。

+2

小心。 'T'并不总是为'TRUE'。最好指定'labels = TRUE'。此外,谷歌搜索结果将取决于您的搜索历史记录。有关如何搜索[tag:r]的提示,请参阅[如何搜索材料](http://stackoverflow.com/questions/102056/how-to-search-for-r-材料) – Andrie 2012-08-02 11:10:00

0

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

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

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