登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

一个关于 R作直方图的小例子  

2010-04-27 19:31:36|  分类: R&Bioconductor |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


http://liyinhao.ycool.com/post.3228142.html


首先是一串很简单的数据,有30个元素:
105  93  80 109 112  88  98 100 116 119  95  97  96 107  89  80  81  69  85  86  88  90  91  86  81  86  88  82  95 108

把它逐行打到一个TXT文件中去,命名为ex1.txt,保存在目录E:\Data下面。
然后打开R,
输入代码 setwd=("E:/Data")  
setwd()函数的作用是指定工作目录,这样以后进行文件读写的时候就可以直接引用工作目录下的文件名,而不用加上路径了。输入getwd()可以查看当前R的工作目录。
这里有个细节要注意,就是路径的分隔符一定要打斜杠/,不能按照WINDOWS里面的方式打反斜杠\,否则R会报错。

然后在R的控制台里继续输入 c<-scan("ex1.txt")
scan()是读取文件的函数,一般用来读按行贮存的数据的,返回值是一串向量。这里我们把ex1.txt里的数据赋给了变量c,赋值号是<-。

然后可以对向量c作直方图,hist(c)
输出结果就是这样:

hist()这个函数有很多参数的,这里介绍下breaks的用处先。
hist(c,breaks=seq(70,130,6))
breaks的作用就是规定直方图绘制时的单元格区间,seq(70,130,6)的意思是构建一组从70到130,公差为6的等差数列。
注意:有时候R会报错说breaks没有跨距整个'x'的范围,那是因为seq的计算方式决定的,例如seq(1,5,3)返回的是向量(1,4)而不是向量(1,4,7),避免这个问题的方法在于有时候把总区间规定的大些就行了。
效果如下:

然后问题就出现了,图中的坐标轴上的数值貌似是R自动分配的,也就是说hist()函数中我找不到任何的参数来改变坐标轴上的数字。于是我们只能借助于R中低位作图命令(low-level plotting commands),低位作图作用于已有图形之上。

首先要不显示x轴和y轴的数值
输入hist(c,breaks=seq(70,130,6),xaxt="n",yaxt="n")

然后利用axis()重新绘制两条坐标轴:

axis(side=1,at=seq(70,130,6))
axis(side=2,at=seq(0,8,1))


其中参数side规定了绘制方向,1为x轴,2为y轴。
参数at则定义了坐标轴的数值,一般用向量表示。
其余的参数请自行查阅help。
最终效果如下


此外,hist()函数中的main参数可以修改直方图的标题,xlab和ylab可以修改坐标轴的描述。更多的自行查看帮助文档。个人觉得R-2.8.1的帮助文档做的超级到位,遇到不熟悉的函数输入?加函数名即可。例如?hist。
  评论这张
 
阅读(3190)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018