美文网首页
R二维坐标轴绘图-轴和刻度

R二维坐标轴绘图-轴和刻度

作者: 匿称也不行 | 来源:发表于2015-11-07 09:49 被阅读5732次

BTW,开始尝试用Markdown


下面的例子实现之前,需要在R中首先输入一些数据。本例采用最简单的散点数据,输入如下代码后,得到散点的x与y坐标值。

x <- c(0,1,2,3,5,7)
y <- c(-50,-80,-70,5,8,7)

基本绘图

绘图的基本命令为plot。如果不带任何参数使用plot命令,输入如下代码:

plot(x,y)

得到的结果为下图:


默认效果

可以发现R会自动调整坐标轴。

如果你发现有不同,比如出来的图形是包含边框的。那也许是我或者你调整了原始参数,可以用如下命令来处理。

par(bty = "o")

此处的o为(环境)参数,可调整为1,7,c,u,]等。之后所加边框就如参数的形状。

给散点增加连线,可用如下命令:

lines(x,y)

得到的结果为下图:

�增加趋势线

进一步,还可以用abline命令,添加其他辅助线。

abline(h=-40)

得到的结果如下图:

增加水平辅助线

调整坐标轴

利用yaxt参数,可实现plot同时,不显示坐标轴。

plot(x,y,yaxt="n",xaxt="n")

得到的结果如下图:

不显示坐标轴

如下命令可以得到更复杂的效果。

plot(x,y,yaxt="n",xlim=c(0,20),ylim=c(-20,20),mgp=c(3,1,0),pos=0,cex.axis=0.5)

得到的结果如下图:

x轴居中

在这条plot命令中,xlimylim分别定义x轴与y轴的范围;mgp是控制坐标轴标题、刻度数值及轴线相对距离的参数;pos参数控制横轴在图形中的相对位置(此例为垂直居中);cex.axis控制图形中刻度字体的大小。

有时我们需要对坐标轴做复杂处理,比如横纵轴刻度不成比例,甚至同一轴的正负区域的刻度也不成比例。对于这种情况需要在隐藏坐标轴后,再自定义出需要的轴。

比如如下命令:

axis(2,at=seq(-20,0),labels=seq(-40,0,2),cex.axis=0.5,mgp=c(3,1,-1))
axis(2,at=seq(0,20),labels=seq(0,20,1),cex.axis=0.5,mgp=c(3,1,-1))

得到的结果如下图:

刻度不一致的效果

可以看到x轴及y轴的正负象限的刻度都不同。这一点是通过axis命令得到的。在这里,参数2控制所绘制的坐标轴位置(可设置为1-4,分别位于不同方向)。atlabels参数分别设置新添加的轴上的点及其刻度。这里要注意的是,这里的点和刻度的值,也受到plot的约束。比如在我们的例子中,plotylim设定了y轴负象限的范围为-20,那么如果设置的at参数超过了20的范围,图像会超出显示范围。那么这几个值之间的关系是如何的?

这里有几个值需要理清:

ylim设定的-20;
at设定的-20
labels设定的-40;

首先,ylim设定了此次plot的图像中,y轴的刻度范围。在此例中,y轴负象限只能有-20值域范围,否则会超过图像范围。
其次,at设定了此次绘制的轴的取值范围,这个范围不该超过ylim的范围,否则也会超过图像显示范围。
最后,注意到上述两个参数只是设定了轴的范围,并非为轴上的刻度显示。这实际上给调整坐标轴留下了余地。观察label设定和最后的结果可以发现,实际的刻度值超过了ylimat的范围。也就是说,虽然实际坐标轴的值域并未发生变化,但却可以通过调整刻度达到调整轴比例的效果。

接下来,cex.axis参数调整的是所绘制的轴上字体的大小,由于刻度可能会变密,所以会用到。

小结

plotparaxis组合使用,能达到的绘图效果比较丰富。将来会花时间完全整理,有需要也可以参考如下页面获得帮助。

相关文章

网友评论

      本文标题:R二维坐标轴绘图-轴和刻度

      本文链接:https://www.haomeiwen.com/subject/phpchttx.html