我在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轴值.我已经浏览了无数的博客和简洁的手册 - 经过几个小时的搜索,我最接近发现任何有用的东西是以下(摘要)说明:
plot()
或par()
指定参数xaxt='n'
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:使用at
和seq()
定义标签:
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)
仔细看看?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 axis
Google,您将获得的第一个链接是我之前提到的Quick R页面.向下滚动到"Axes",你会得到一个关于如何做到这一点的非常好的小指南.你应该首先检查那里的任何绘图问题,它会比等待SO回复更快.
归档时间: |
|
查看次数: |
229668 次 |
最近记录: |