最近项目需求,用R画了一个九宫格的图,第一次画,将简化后的脚本呈现一下,不是有人说,既然做了,那就摆出来吧。

*中文行为说明:

args <- commandArgs(T)

调用命令行读取

file <- read.table(args[1])

以表格形式读取第一个文件

my_len = length(args)

计算总文件数

a <- t(file[1])

读取第一个文件第一列

#par(mfrow=c(3,3))

#绘制九宫格画布(3 x 3)

nm = args[1]

定义画布的标题

pdf (paste(nm, "all.pdf", sep = "."))

定义输出图片格式和文件名

split.screen(c(3,3))

绘制九宫格画布(3 x 3)

c <- matrix(0, ncol = 52)

定义一个新的数据c,由52个0组成的列

for (j in 1:7){

循环读取7个文件

file <- read.table(args[j])

读取各个文件

print (file)

打印文件检验读取是否正确

b <- t(file[2])

取文件第二列作为b

c = c + b

c为所有文件第二列的求和

print (args[j])

输出当前读取文件名

maxa = max(a)

获取a数组的最大值

maxb = max(b)

获取b数组的最大值

col_c=c("#66CDAA","#8E388E","#CDCD00","red","blue")

定义颜色

sp <- spline (a, b, n=60, method = "natural")

绘制平滑曲线,n为生成差值的数量

#       split.screen(c(3,3))#, screen = j)

screen(j)

定位于第j个画布

par(mar=c(2,2,1,1))

定义画布边界

nm = strsplit(args[j], split = ".xls")[[1]]

获取标题信息

plot(a[2:51],b[2:51],type='l',col=col_c[1], lwd=1, xlab = " Distance  ()", ylab = "Frequence Number", main = nm[1], cex.lab=0.5, cex.axis = 0.5, cex.main = 0.5, xaxt = "n", yaxt ="n", tcl = 0.2)

画图

axis(1, mgp = c(0, 0, 0), cex.axis = 0.5, xlab = "Stream Distance to TEs (1000bp windows)", tcl = 0.2)

调整X轴

axis(2, mgp = c(0, 0, 0), cex.axis = 0.5, tcl = 0.2)

调整Y轴

title(xlab = "Distance of  (1000bp windows)", ylab = "Frequence Number", line = 0.5, cex.lab=0.5,)

调整标题

}

screen(8)

par(mar=c(2,2,1,1))

plot(a[2:51],c[2:51],type='l',col=col_c[1], lwd=1, xlab = "Distance to  (1000bp windows)", ylab = "Frequence Number", main = "complete ", cex.lab=0.5, cex.axis = 0.5, cex.main = 0.5, xaxt = "n", yaxt ="n", tcl = 0.2)

画7组数据统计图

axis(1, mgp = c(0, 0, 0), cex.axis = 0.5, xlab = "Stream Distance to TEs (1000bp windows)", tcl = 0.2)

axis(2, mgp = c(0, 0, 0), cex.axis = 0.5, tcl = 0.2)

title(xlab = "Distance of CNE to genes (1000bp windows)", ylab = "Frequence Number", line = 0.5, cex.lab=0.5,)

dev.off()

完成

看起来很简单,对不对。其实未简化的脚本长一些,在每个小图中又绘制了多条曲线,第八幅图用来做图例和文本说明,第九幅图用来做另一类统计的曲线图(强迫症的缺陷)。

有兴趣的同学可以一起探讨(图片大小,刻度线调整,刻度值位置大小调整,标题调整,正则匹配,图注,注释,等等。我是个R小白。生物埋葬理科生,那就用各种语言把生物学生挖出来吧。)

共载于微信公众号

R画图——分屏的更多相关文章

  1. clients(PV操作共享内核内存进行输入输出分屏) - server(进程间通信)模型实现

    1.拓扑结构 2.PV操作共享内核内存进行输入输出分屏 (1) int semop(int semid,struct sembuf *sops,size_t nsops): 功能描述 操作一个或一组信 ...

  2. ubuntu14.04终端分屏terminator的安装使用与配置

    安装 terminator 软件 . sudo apt-get install terminator 这个终端程序可以分屏,常用操作快捷键如下: Ctrl+Shift+O Split terminal ...

  3. android分屏

    上手了Android N Preview,第一个不能错过的新特性就是App分屏的支持.Android7.0原生系统就可以支持两个App横屏并排或者竖屏上下摆放了.第二个新特性就是在Android TV ...

  4. android仿系统Launcher界面,实现分屏,左右滑动效果(ViewSwitcher)

    ViewSwitcher代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitche ...

  5. google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程

    google 进入分屏后在横屏模式按home键界面错乱(二) 你确定你了解分屏的整个流程? imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&quo ...

  6. android7/8新特性 画中画、shortcut和分屏模式

    多窗口 在android7.0中原生提供了多窗口模式和画中画模式,多窗口模式将屏幕分为上下或左右两块区域分别显示两个应用,画中画模式主要应用在android TV中,类似于windows中的多窗口. ...

  7. cat 显示文本、less 分屏显示文本、more 分页显示文件、head 显示文件的前面的内容、cut 切割、paste合并、wc用来对文本进行统计、sort排序、权限、关闭文件、vim的使用

    cat 显示文本  -E 显示结尾的$符 -n 对显示的每一行进行编号 -b 对非空行进行编号 -s 对连续的空行进行压缩 tac 倒序显示 less 分屏显示文本 向下翻一屏 空格 向下翻一行 回车 ...

  8. arcgis api for js入门开发系列六地图分屏对比(含源代码)

    上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...

  9. 利用Render Texture实现游戏的小雷达效果(摄影机分屏)

    最近游戏蛮牛在举办一个活动,就是要做出这样的效果: 题目:实现游戏分屏效果 要求:1.        分屏,且分割线不规则(即非水平或垂直):2.        各屏可单独操作(移动.缩放),操作指该 ...

随机推荐

  1. django-orm框架表单的增删改查

    08.14自我总结 django-orm框架 一.orm基本配置 1.创建django项目 命令行:cmd先去到django创建目录,然后输入django-admin startproject dja ...

  2. Hadoop(MapR)分布式安装及自动化脚本配置

    MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中 ...

  3. [专题练习] Part1 搜索

    本文中的链接有的是题解有的是题目链接,已经搞混了... 一.DFS(深度优先搜索) 过于水略过. 二.BFS(广度优先搜索) 同上. 三.记忆化 记忆化搜索,就是我们的状态会重复利用,为了防止状态的重 ...

  4. go-defer语句

    Go语言中的defer语句也非常独特. defer语句仅能被放置在函数或方法中. 它由关键字defer和一个调用表达式组成. 调用表达式所表示的既不能是对Go语言内建函数的调用 也不能是对Go语言标准 ...

  5. MongoDB-系统时钟跳变引发的风波

    目录 背景 一. 对 oplog 的影响 oplog 原理 二.主备倒换 小结 声明:本文同步发表于 MongoDB 中文社区,传送门: http://www.mongoing.com/archive ...

  6. Python 命令行之旅:使用 docopt 实现 git 命令

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  7. 实现文字色彩渐变(Mask)

    文字色彩渐变是指的文字本身的颜色,不是背景渐变.要实现此效果可以采用Mask组件,本文先从介绍mask说起 1)Mask介绍 mask组件实现的作用是,mask组件所在游戏物体下的子游戏物体在mask ...

  8. MyBatis与Spring的整合实例详解

    从之前的代码中可以看出直接使用 MyBatis 框架的 SqlSession 访问数据库并不简便.MyBatis 框架的重点是 SQL 映射文件,为方便后续学习,本节讲解 MyBatis 与 Spri ...

  9. ABP WebApi的请求类型

    Api对应的请求类型分为以下四种方法: 1.POST 2.PUT 3.DELETE 4.GET 一般abp的请求类型都是根据接口命名来定义的,Create——POST,Delete——DELETE,U ...

  10. C++学习笔记2_函数.函数指针.函数模板

    1. 内联函数void printAB(int a,int b){ cout<<(a)<<(b)<<endl;}int main(void){ for(int i= ...