| 查看: 1600 | 回复: 20 | ||||
| 【奖励】 本帖被评价9次,作者学员762E0L增加金币 8 个 | ||||
| 当前主题已经存档。 | ||||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||||
nono2009超级版主 (文学泰斗)
|
[资源]
★★★★★ 五星级,优秀推荐
|
|||
支持。祝新春快乐! |
» 猜你喜欢
所感
已经有3人回复
要不要辞职读博?
已经有7人回复
不自信的我
已经有11人回复
北核录用
已经有3人回复
实验室接单子
已经有3人回复
磺酰氟产物,毕不了业了!
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有10人回复
26申博(荧光探针方向,有机合成)
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有26人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有4人回复
|
R作图概述 R的作图功能非常强大,且在不断拓展更新之中。但是与sigmaplot或origin等作图软件相比R作图对初学者来说可能比较繁琐,这主要是因为R作图过程中对图中的每个构成要素均需通过特定的函数或者参数来设定,而对函数功能和参数设定的熟悉、理解及至融会贯通需要一定的时间。不过,一旦掌握了其中的窍门,将会大大提供作图的效率,因此值得拿出时间和精力学习一下。 如在其它作图软件中一样,R中的图也是由很多构成元素组成,比如图的外框(box)、图题(title)、图例(legend)、坐标轴(axes)、 坐标轴名称(label)、图内的点(points)、线(line)、文字(text)等等。对于每个元素,又有不同的属性,比如线的线型(实线、虚线、点划线等)。这些元素的刻画和各元素属性的调控可以通过不同的函数和函数中的参数来实现。R中提供了两类作图函数,一类是高水平作图函数,如plot()、matplot(),可以一次性画出前面提到的所有构成要素;另一类为低水平作图函数,如points()、lines(),专门画出或调控图中的某一特定构成元素。 比如我们经常会用的一种作图方法就将数据由符号(symbol)表示,然后用线串联起来。 plot(x=c(1:3),y=c(4,7,6),xlab="x轴名称",ylab="y轴名称",main="图题",type="b" ![]() 上面这个命令中,我们运用一个高水平作图函数,通过相应参数对图的x坐标、y坐标以及坐标轴的名称和图的名称作了设定。 如果想在同一个图中画两条以上的曲线,那么可以在前面运行基础上增加: points(x=c(2,2.5,3),y=c(4,5,6.5),pch=3,col=2) lines(x=c(2,2.5,3),y=c(4,5,6.5),lty=2,col=4) 请注意,我们在运用各种高级或低级作图函数的时候,运用了一些参数如pch控制符号形状(symbol),lty控制线型、xlab控制x轴的名称等。通常情况下高级和低级作图函数中的参数是通用的,比如pch、lty、lwd等,不过也有特殊的情况。为了弄清各个函数中包含的参数以及各个参数的含义,需要学会善于运用R中的帮助文件。在函数名称前面加上问号,就可以轻松得到函数功能的详细介绍和相关参数含义及取值范围的解释。比如我们在R中输入?plot(),就可以看到关于plot()这个函数的所有信息。此外,在《R Graphics(Murrell,2006)一书中,作者系统解释了各种函数的功能和相应参数的含义及取值范围,所以我们强烈推荐感兴趣的读者详细阅读该书。 对R作图有了基本了解之后,我们正式转入论文发表过程中的运用。显然前面给出的例子距离论文发表过程中的运用还有较大差距。论文发表过程中,我们往往需要在数据点(symbol)上添加数值的观测误差(se)或者标准偏差 (sd),同时还需要将类似的图归纳整合在一起。这就需要我们运用一些特殊的作图函数,并对图中的各个元素进行精细调控。 #为了将多个图进行组合,往往需要在一张纸上画几个图,这些图很多时候可能共用一个x轴或者一个y轴(见图2)。对此R中有一个par()方程进行设定。这个方程中有很多参数,本文中将要重复应用的参数包括mfcol=c(a,b), 定义组合图中有a行b列共a*b个图; mai=c(a,b,c,d)和 omi=c(a,b,c,d)分别定义图的边(margin)和图的外边空间大小。这个空间所对应的图上的区域是以后图形组合的关键,强烈建议参考《R Graphics》一书第三章的解释。 当我们知道了控制图形布局和每个图中元素的调控方法之后,后面表示决定具体该如何进行设置。在此我们建议先把想要最后得到的构架以草图的用笔画出,做到心中有图。比如本文的图2,看到这个图的框架之后,我们便可以知道需要对各个部分作如下设定: 1)图板上需要安排2行2列,共4个图,可通过par(mfrow=c(2,2))得到; 2)图之间没有间隔,也就说所有图都紧密联接,可通过par(mai=c(rep(0,4)))得到; 3)整个画板上只需要底部和左边留出空间以便显示坐标轴和坐标名称,而顶部和右边不需要留有空间,可通过par(omi=c(0.6,0.6,0,0))获得,注意参数单位为inch。 4)图的类型为柱状图,且带有误差线,可通过sciplot包中的bargraph.CI()得到; 5)A和B两个图不需要x轴,而B和D两个图不需要y轴,可通过高级作图函数中(此处为bargraph.CI())参数xaxt="n"和/或yaxt="n"得到; 6)x轴和y轴的名称有两个,建议通过mtext(outer=TRUE)加上par(omi=c(0.6,0.6,0,0))获得; 7)每个次级图上均有一个字母(ABCD)且每个柱上有多重比较的显著性字母,可通过text()得到; 8)只有A和B中具有图例,可以通过legend()得到; 当然还有一些其它参数的精细调控, 在此不再一一解释,不过此处涉及到的参数均反复需要且非常实用,请读者参考R的帮助文件,实践运行下面命令,体会其中的思路。 柱状图的制作 #加载数据 library(MASS) cab<-data.frame(cabbages) cab[1,] ##加载这个终极包,人家叫scientific plot,真是没有白叫!注意,没有下载的请先下载! library(sciplot) bargraph.CI(Cult, HeadWt, group =Date , data =cab, xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1, col = "black", angle = 45, cex.names = 1.25, density = c(0,20,100), legend = TRUE,ylim=c(0,5)) box() bargraph.CI(Date, HeadWt, group =Cult , data =cab, xlab = NA, ylab = NA, cex.lab = 1.5, x.leg = 1, col = "black", angle = 45, cex.names = 1.25, density = c(0,20), legend = TRUE,ylim=c(0,5)) box() |
8楼2010-02-17 04:37:53
2楼2010-02-13 19:19:55
3楼2010-02-13 22:25:22
4楼2010-02-14 03:28:17













回复此楼