R画图——分屏
最近项目需求,用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画图——分屏的更多相关文章
- clients(PV操作共享内核内存进行输入输出分屏) - server(进程间通信)模型实现
1.拓扑结构 2.PV操作共享内核内存进行输入输出分屏 (1) int semop(int semid,struct sembuf *sops,size_t nsops): 功能描述 操作一个或一组信 ...
- ubuntu14.04终端分屏terminator的安装使用与配置
安装 terminator 软件 . sudo apt-get install terminator 这个终端程序可以分屏,常用操作快捷键如下: Ctrl+Shift+O Split terminal ...
- android分屏
上手了Android N Preview,第一个不能错过的新特性就是App分屏的支持.Android7.0原生系统就可以支持两个App横屏并排或者竖屏上下摆放了.第二个新特性就是在Android TV ...
- android仿系统Launcher界面,实现分屏,左右滑动效果(ViewSwitcher)
ViewSwitcher代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitche ...
- google 分屏 横屏模式 按home键界面错乱故障分析(二) 分屏的启动过程
google 进入分屏后在横屏模式按home键界面错乱(二) 你确定你了解分屏的整个流程? imageMogr2/auto-orient/strip%7CimageView2/2/w/1240&quo ...
- android7/8新特性 画中画、shortcut和分屏模式
多窗口 在android7.0中原生提供了多窗口模式和画中画模式,多窗口模式将屏幕分为上下或左右两块区域分别显示两个应用,画中画模式主要应用在android TV中,类似于windows中的多窗口. ...
- cat 显示文本、less 分屏显示文本、more 分页显示文件、head 显示文件的前面的内容、cut 切割、paste合并、wc用来对文本进行统计、sort排序、权限、关闭文件、vim的使用
cat 显示文本 -E 显示结尾的$符 -n 对显示的每一行进行编号 -b 对非空行进行编号 -s 对连续的空行进行压缩 tac 倒序显示 less 分屏显示文本 向下翻一屏 空格 向下翻一行 回车 ...
- arcgis api for js入门开发系列六地图分屏对比(含源代码)
上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...
- 利用Render Texture实现游戏的小雷达效果(摄影机分屏)
最近游戏蛮牛在举办一个活动,就是要做出这样的效果: 题目:实现游戏分屏效果 要求:1. 分屏,且分割线不规则(即非水平或垂直):2. 各屏可单独操作(移动.缩放),操作指该 ...
随机推荐
- 前端知识点总结——jQuery(上)
1.什么是jQuery jQuery: 第三方的极简化的DOM操作的函数库第三方: 下载极简化: 是DOM操作的终极简化: 1. DOM: 增删改查2. 事件绑定:3. 动画效果:4. Ajax DO ...
- [CF467D] Fedor and Essay
After you had helped Fedor to find friends in the «Call of Soldiers 3» game, he stopped studying com ...
- Flyway 助力数据库脚本自动化管理攻略
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 今天,探讨一个有趣的话题:我们可以通过 ...
- vmware14安装centos7的步骤(图文详解)
一.centos的安装 centos分为桌面版和黑屏版(命令行版):在这里我使用的是命令行版. 这里选择安装程序光盘映像文件,文件就是centos7的iso文件. 虚拟机的名称和位置自行设置; 虚拟机 ...
- Unity - HasExitTime用法
本文详细分析了AnimatorController中动画切换过渡问题,即Translation过渡及hasExitTime的问题.方法为对实际项目中的所有情况进行分类,规划逻辑图,可视化分析解决这些问 ...
- 原来热加载如此简单,手动写一个 Java 热加载吧
1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环 ...
- Java Stream函数式编程图文详解(二):管道数据处理
一.Java Stream管道数据处理操作 在本号之前发布的文章<Java Stream函数式编程?用过都说好,案例图文详解送给你>中,笔者对Java Stream的介绍以及简单的使用方法 ...
- 百万年薪python之路 -- 变量及if的练习
1.简述变量命名规范 1.变量由数字,字母,下划线组成 2.不能以数字开头 3.不能使用python关键字 4.不能使用中文和拼音命名 5.区分大小写 6.变量名要具有描述性 7.推荐写法 7.1驼峰 ...
- .NET Core 3.0 构建和部署
Default Executables 默认可执行文件 在 dotnet build 或 dotnet publish 期间,将创建一个与你使用的 SDK 的环境和平台相匹配的可执行文件. 和其他本机 ...
- day04整理
目录 内容回顾 变量 什么是变量 变量的组成 变量名的命名规范 注释 单行注释 多行注释 turtle库的使用 一.数据类型基础 一.数字类型 (一)整形 (二)浮点型 二.字符串类型 (一)作用:姓 ...