#中文 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多行交叉作图的更多相关文章

  1. 【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语 ...

  2. R随机森林交叉验证 + 进度条

    library(data.table) library(randomForest) data <- iris str(data) #交叉验证,使用rf预测sepal.length k = 5 d ...

  3. 使用 win+r 命令行打开我们的桌面应用(处女座的福音)

    首先新建一个文件夹,名为quickapp,然后在地址栏复制文件目录地址,进入系统高级设置,修改系统环境变量Path,双击后选择新建,输入quickapp文件目录地址,确认保存. 如何修改path变量? ...

  4. 【R】行或列数目不同的两个数据框如何用rbind/cbind合并?

    目录 前言 方法一:dplyr的bind_rows 方法二:plyr的rbind.fill 前言 通常我们用rbind和cbind合并相同行列的数据框.当两个数据框具有不同行列数目时,直接用会报错. ...

  5. 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行

    Editplus 选中一行: ctrl+rEditplus 复制一行: ctrl+r选择行,然后ctrl+c复制.复制一行到下一行中:Editplus有:Ctrl+j 复制上一行的一个字符到当前行Ed ...

  6. [R] 如何在Linux命令行进行参数传入?

    以前由于R命令行传参不友好,经常嵌套在其他程序语言(如Perl/Python)中来进行传参,但现在也陆续有一些方式来实现R的传参了,这里简单罗列下. 方法一 最传统的方法就是使用系统自带的comman ...

  7. 深入对比数据科学工具箱:Python和R之争

    建议:如果只是处理(小)数据的,用R.结果更可靠,速度可以接受,上手方便,多有现成的命令.程序可以用.要自己搞个算法.处理大数据.计算量大的,用python.开发效率高,一切尽在掌握. 概述 在真实的 ...

  8. R语言学习2:绘图

    本系列是一个新的系列,在此系列中,我将和大家共同学习R语言.由于我对R语言的了解也甚少,所以本系列更多以一个学习者的视角来完成. 参考教材:<R语言实战>第二版(Robert I.Kaba ...

  9. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

随机推荐

  1. odoo中self的使用

    一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr. ...

  2. Object.keys()的理解

    Object.keys(obj) 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致. 例子如下: ①.简单的数组( ...

  3. DAX/PowerBI系列 - 库存总价值(Inventory Value)

    DAX/PowerBI系列 - 库存总价值(Inventory Value) 欢迎交流与骚扰 难度: ★★☆☆☆(2星) 适用: ★★☆☆☆(2星) 概况: 有多少货(库存)当然重要(对于运营人员), ...

  4. 基于usb4java的usb通讯

    下载java API及lib库地址:http://usb4java.org/index.html 1.导入所需要的库: 2.添加配置文件:文件名:javax.usb.properties:内容:jav ...

  5. android studio相关配置

    启动出现:Unable to access Android SDK add-on list 解决: Android Studio First Run 检测 Android SDK 及更新,由于众所周知 ...

  6. sessionid固定与session混淆的一些随想

    以前一直觉得sessionid固定和session混淆就是两个一样的东西,后来发现两者还是要分开来的,主要因为利用场景的不同!!! sessionid固定和session混淆还是需要区分开来的一般情况 ...

  7. 日志采集器windows客户端的配置释义

    <Extension json> Module xm_json </Extension> <Extension charconv> Module xm_charco ...

  8. day08 python之函数初识

    一,什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print(),len( ...

  9. PHP日历的算法

    <?php if (function_exists('date_default_timezone_set')) { date_default_timezone_set('Asia/Chongqi ...

  10. lua语言三目运算符

    [1]lua语言中完整的三目运算符 完整三目运算符形式:(a and {b} or {c})[1] [2]分析原因 大部分C或C++程序员经常会用到三目运算符(三元运算符),形如 a ? b : c; ...