最近项目需求,用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. 前端知识点总结——jQuery(上)

    1.什么是jQuery jQuery: 第三方的极简化的DOM操作的函数库第三方: 下载极简化: 是DOM操作的终极简化: 1. DOM: 增删改查2. 事件绑定:3. 动画效果:4. Ajax DO ...

  2. [CF467D] Fedor and Essay

    After you had helped Fedor to find friends in the «Call of Soldiers 3» game, he stopped studying com ...

  3. Flyway 助力数据库脚本自动化管理攻略

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 今天,探讨一个有趣的话题:我们可以通过 ...

  4. vmware14安装centos7的步骤(图文详解)

    一.centos的安装 centos分为桌面版和黑屏版(命令行版):在这里我使用的是命令行版. 这里选择安装程序光盘映像文件,文件就是centos7的iso文件. 虚拟机的名称和位置自行设置; 虚拟机 ...

  5. Unity - HasExitTime用法

    本文详细分析了AnimatorController中动画切换过渡问题,即Translation过渡及hasExitTime的问题.方法为对实际项目中的所有情况进行分类,规划逻辑图,可视化分析解决这些问 ...

  6. 原来热加载如此简单,手动写一个 Java 热加载吧

    1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...

  7. Java Stream函数式编程图文详解(二):管道数据处理

    一.Java Stream管道数据处理操作 在本号之前发布的文章<Java Stream函数式编程?用过都说好,案例图文详解送给你>中,笔者对Java Stream的介绍以及简单的使用方法 ...

  8. 百万年薪python之路 -- 变量及if的练习

    1.简述变量命名规范 1.变量由数字,字母,下划线组成 2.不能以数字开头 3.不能使用python关键字 4.不能使用中文和拼音命名 5.区分大小写 6.变量名要具有描述性 7.推荐写法 7.1驼峰 ...

  9. .NET Core 3.0 构建和部署

    Default Executables 默认可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件. 和其他本机 ...

  10. day04整理

    目录 内容回顾 变量 什么是变量 变量的组成 变量名的命名规范 注释 单行注释 多行注释 turtle库的使用 一.数据类型基础 一.数字类型 (一)整形 (二)浮点型 二.字符串类型 (一)作用:姓 ...