R多行交叉作图
#中文 UTF-8编码 3.4.0
library(Hmisc)
mydata = read.table('clipboard',header = T)
head(mydata)
mycol=c(rgb(1,0,0,0.3),'cadetblue','darkseagreen',
'aquamarine3','darkslateblue','red','blue')
coltextandlabel = 'black'
####################################################################
dev.new()
close.screen(all.screens = T)
split.screen(c(1,1))
mybottom = c(seq(0.7,0.25,length.out = 4),0.12,0)
mytop = c(seq(1,0.45,length.out = 4),0.25,0.13)
mylayout = matrix(data = c(rep(0,6),rep(1,6),mybottom,
mytop),ncol = 4)
split.screen(mylayout)
mtck =-0.03;mmgp = c(3.5,0.5,0);mline = 2.5; mlwd = 2
#########################################################
id=2
screen(id)#准备绘制第2号屏幕,也是最上面的图
par(tck = mtck,mar=c(0,4,2,4),mgp=mmgp,las=1)
yl = range(na.exclude(mydata$NO3))
plot(x=mydata$depth,y=mydata$NO3,type='l',axes=F,lwd=mlwd,
ylab='',xlab='',col=mycol[id],ylim=yl)
#axis(4,at=seq(0,4.8,length.out = 4),col=mycol[id],col.axis=mycol[id])
axis(4,at=seq(0,4.8,length.out = 4))
mtext(side = 4,line = mline,las=0,
text = expression(paste(NO[3]^'-',' (μeq/L)')))
#########################################################
id=3
screen(id)#准备绘制第3号屏幕,也是最上面的图
par(tck = mtck,mar=c(0,4,0,4),mgp=mmgp,las=1)
yl = range(na.exclude(mydata$NH4))
plot(x=mydata$depth,y=mydata$NH4,type='l',axes=F,lwd=mlwd,
ylab='',xlab='',col=mycol[id],ylim=yl)
axis(2,at=seq(0,12,length.out = 4))
mtext(side = 2,line = mline,las=0,
text = expression(paste(NH[4]^'+',' (μeq/L)')))
#########################################################
id=4
screen(id)#准备绘制第3号屏幕,也是最上面的图
par(tck = mtck,mar=c(0,4,0,4),mgp=mmgp,las=1)
yl = range(na.exclude(mydata$Ca))
plot(x=mydata$depth,y=mydata$Ca,type='l',axes=F,lwd=mlwd,
ylab='',xlab='',col=mycol[id],ylim=yl)
axis(4,at=seq(0,5400,length.out = 4))
mtext(side = 4,line = mline,las=0,
text = expression(paste(Ca^'2+',' (μeq/L)')))
#text = expression(paste(Ca^'2+','\n(μeq/L)'
#erase.screen(4)
#########################################################
id=5
screen(id)#准备绘制第3号屏幕,也是最上面的图
par(tck = mtck,mar=c(0,4,0,4),mgp=mmgp,las=1)
plot(x=mydata$depth,y=mydata$Mg,type='l',axes=F,lwd=mlwd,
ylab='',xlab='',col=mycol[id])
axis(2,at=seq(0,600,length.out = 4))
mtext(side = 2,line = mline,las=0,
text = expression(paste(Mg^'2+',' (μeq/L)')))
#########################################################
id=6
screen(id)#准备绘制倒数第二个屏幕,也是最上面的图
prdata = cbind(mydata$depth,mydata$precipitation.mm.)
prdatan = prdata[!is.na(prdata[,2]),]
range(prdatan[,2])
par(tck = mtck,mar=c(0,4,0,4),mgp=mmgp,las=1)
plot(x=prdatan[,1],y=prdatan[,2],type='l',axes=F,
ylab='',xlab='',col=mycol[id])
axis(4,at=seq(250,500,length.out = 3),tck=-0.05)
mtext(side = 4,line = mline,las=0,
text = 'Pr.(mm)')
#########################################################
id=7
screen(id)#准备绘制倒数第一个屏幕,也是最上面的图
wqldata = cbind(mydata$depth,mydata$w.q.l.mm.)
wqldatan = wqldata[!is.na(prdata[,2]),]
range(wqldatan[,2])
par(tck = mtck,mar=c(2.5,4,0,4),mgp=mmgp,las=1)
plot(x=wqldatan[,1],y=wqldatan[,2],type='l',axes=F,
ylab='',xlab='',col=mycol[id])
axis(2,at=seq(400,800,length.out = 2),tck=-0.07)
mtext(side = 2,line = mline,las=0,
text = 'w.q.l.(mm)')
#########################################################
id=1
screen(id,new=F)
par(tck = -0.01,mar=c(2.3,4,2,4),mgp=c(2.3,1,0))
plot(x=mydata$depth,y=mydata$Mg,type='n',axes=F,
ylab='',xlab='',col=mycol[id])
axis(1,at=seq(0,2200,200),padj = -1)
mtext(side = 1,text = 'Depth (cm)',line = 1.3)
box()
majorvline=mydata$depth[which(mydata$THICK!='NA')]
abline(v= majorvline,col='orangered',lty=1,lwd=1.5)
minorvline=mydata$depth[which(mydata$THIN!='NA')]
abline(v= minorvline,col=mycol[id],lty=2,lwd=1)
at3=mydata$depth[which(mydata$alllabel!='NA')]
lab3=mydata$alllabel[which(mydata$THICK!='NA')]
mtext(side = 3,at=majorvline,text = c(lab3),cex=1,col='orangered')
R多行交叉作图的更多相关文章
- 【R语言系列】作图入门示例一
假设有如下数据,我们使用plot函数作图 月龄 体重 月龄 体重 1 4.4 9 7.3 3 5.3 3 6.0 5 7.2 9 10.4 2 5.2 12 10.2 11 8.5 3 6.1 R语 ...
- R随机森林交叉验证 + 进度条
library(data.table) library(randomForest) data <- iris str(data) #交叉验证,使用rf预测sepal.length k = 5 d ...
- 使用 win+r 命令行打开我们的桌面应用(处女座的福音)
首先新建一个文件夹,名为quickapp,然后在地址栏复制文件目录地址,进入系统高级设置,修改系统环境变量Path,双击后选择新建,输入quickapp文件目录地址,确认保存. 如何修改path变量? ...
- 【R】行或列数目不同的两个数据框如何用rbind/cbind合并?
目录 前言 方法一:dplyr的bind_rows 方法二:plyr的rbind.fill 前言 通常我们用rbind和cbind合并相同行列的数据框.当两个数据框具有不同行列数目时,直接用会报错. ...
- 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行
Editplus 选中一行: ctrl+rEditplus 复制一行: ctrl+r选择行,然后ctrl+c复制.复制一行到下一行中:Editplus有:Ctrl+j 复制上一行的一个字符到当前行Ed ...
- [R] 如何在Linux命令行进行参数传入?
以前由于R命令行传参不友好,经常嵌套在其他程序语言(如Perl/Python)中来进行传参,但现在也陆续有一些方式来实现R的传参了,这里简单罗列下. 方法一 最传统的方法就是使用系统自带的comman ...
- 深入对比数据科学工具箱:Python和R之争
建议:如果只是处理(小)数据的,用R.结果更可靠,速度可以接受,上手方便,多有现成的命令.程序可以用.要自己搞个算法.处理大数据.计算量大的,用python.开发效率高,一切尽在掌握. 概述 在真实的 ...
- R语言学习2:绘图
本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
随机推荐
- Javascript htmldecode
// HtmlDecode http://lab.msdn.microsoft.com/annotations/htmldecode.js // client side version of the ...
- VLAN之间通信-三层交换
实验目的 VLAN之间通信-三层交换 掌握配置VLANIF接口的方法 理解数据包跨VLAN路由的原理 掌握测试多层交换网络连通性的方法 实验原理 三层交换机在原有二层交换机的基础之上增加了路由功能,同 ...
- 01day
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. (运行速度飞机) 内存:临时存储数据. 8g,16g, (高铁) 1,成本高. 2,断电即消 ...
- Java如何获取图片验证码保存
举例网站:https://my.1hai.cn/Login/?url=http://www.1hai.cn/ 一.场景:出于安全性考虑,越来越多的Web平台登录都会增加图形验证码(图片),或者短信验证 ...
- 4、jeecg 笔记之 自定义显示按钮 (exp 属性)
1.需求 先看一下需求吧,我们希望 datagrid 操作栏中的按钮,可以根据条件进行动态显示. 2.实现 其实 jeecg 提供了一个属性 - exp ,通过该属性即可实现. <t:dgFun ...
- jsr-303 参数校验—自定义校验注解
1.为什么要自定义? 通过上篇学习,了解到很多常用注解了,但是呢,总是有那么些需求.... 2.案例分析(手机号格式) 2.1.需要验证的实体 Bean public class LoginVo ...
- 《Java程序设计》第二周学习记录(2)
目录 3.1 运算符与表达式 3.3 if条件分支语句 3.7 for语句与数组 参考资料 3.1 运算符与表达式 和C语言基本上没有区别,要注意的是关系运算符的输出结果是bool型变量 特别要注意算 ...
- autoMapper的介绍
.NET的DTO映射工具AutoMapper 分类: 多层架构 DTO .NET2012-08-11 10:27 2466人阅读 评论(0) 收藏 举报 原文:https://github.com/A ...
- 当业务逻辑没错,直接mapper里面出错时
仔细检查,发现sql语句写的也没问题,但就是出错 slide_show_img_url = #{slideShowImgUrl,jdbcType=VARCHAR}, where goods_slide ...
- angularjs 绑定多个属性到下拉框
绑定下拉框 angularjs 代码: //活动下拉切换 $scope.activityChange = function () { var cards = new Array(); var url ...