我在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轴值。我已经浏览了无数的博客和简洁的手册 - 经过几个小时的搜索,我最接近发现任何有用的东西是以下(摘要)说明:
plot()
或par()
,指定参数xaxt='n'
axis()
,例如axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)
我试过了,结果图根本没有x轴值。是否有人可以知道如何做到这一点?我无法相信以前没有人试过这样做过。
答案 0 :(得分:80)
您可以在?axis
的帮助页面中找到问题的答案。
以下是帮助页面示例之一,已根据您的数据修改:
选项1:使用xaxp
定义轴标签
plot(x,y, xaxt="n")
axis(1, xaxp=c(10, 200, 19), las=2)
选项2:使用at
和seq()
定义标签:
plot(x,y, xaxt="n")
axis(1, at = seq(10, 200, by = 10), las=2)
这两个选项都产生相同的图形:
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))