论文中常见的拟合散点验证图(R语言版)
论文中常见的拟合散点验证图(R语言版)
如上图所示,是论文中常见的validation图,python也能实现相似的图绘。
今天先介绍R语言版,python改期再介绍吧
这张图需要依次实现下列功能:
- data实测与data模拟的散点绘制
- R方、RMSE、Bias等参量计算与绘制
- 拟合后的直线与y=x直线
- 网格线(如果需要)
使用base R的功能一步一步计算:
为了实现多个因变量和一个自变量在同一个图片里,我们要用points或者lines函数画其他因变量和自变量的值几点注意:
- 画图的时候,明明设置了X轴Y轴的范围,为什么坐标轴的长度还是会多出一块呢?看下图:
这里用到了xaxs和yaxs,可以使x,y轴从0开始
直接上代码
# 数据读取
library(readxl)
library(stringr)
library(data.table)
DE_Hai <- read_excel("D:/acad3_211001/data/DE-Hai.xlsx", sheet = "DE-Hai")
Qsim <- DE_Hai$Gc; Qobs <- DE_Hai$Gc1
Qsim为模拟的数据,Qobs为观测的数据,自行读取
再手动写一下求RMSE等参数的函数:
{r}
NSE <- function(Qsim, Qobs){# exclude NAdata <- data.table(Qsim, Qobs)data <- na.omit(data)Qsim <- data$QsimQobs <- data$Qobs# computeQobs_mean <- mean(Qobs)Emod <- sum((Qsim - Qobs)^2)Eref <- sum((Qobs - Qobs_mean)^2)if (Emod == 0 & Eref == 0) {NSE <- 0} else {NSE <- (1 - Emod / Eref)}NSE
}
RMSE <- function(Qsim, Qobs){# exclude NAdata <- data.table(Qsim, Qobs)data <- na.omit(data)Qsim <- data$QsimQobs <- data$Qobssqrt(mean((Qsim - Qobs)^2))
}
Bias <- function(Qsim, Qobs){# exclude NAdata <- data.table(Qsim, Qobs)data <- na.omit(data)Qsim <- data$QsimQobs <- data$Qobs# BIASsumQobs <- sum(Qobs)sumQsim <- sum(Qsim)if (sumQobs == 0) {BIAS <- 0} else {BIAS <- (sumQsim - sumQobs) / sumQobs}BIAS
}
接下来是核心部分:
# line plot
plot(x=Qsim, y=Qobs,col=rgb(0.4,0.4,0.8,0.6),pch=16, cex=1.3,xlab="Gc by PML", ylab="Gc by LE",xlim=c(0,0.01) , ylim=c(0,0.01), yaxs="i",xaxs="i")
grid(nx=5,ny=5,lwd=1,lty=2,col=rgb(0.4,0.4,0.8,0.2))line.model <- lm(Qobs~Qsim)
k <- as.numeric(line.model$coefficients[2])
b <- as.numeric(line.model$coefficients[1])
p <- (summary(line.model))$coef[2,4]lines(seq(-0.001,0.011,length=100), k * seq(-0.001,0.011,length=100) + b, col='#c27ba0', lwd=2)lines(seq(-0.001,0.011,length=100), seq(-0.001,0.011,length=100), col="#3c78d8", lwd=2)
text(0.007, 0.002, str_sub(paste('NSE=',NSE(Qsim, Qobs), sep=' '),1, 10))
text(0.009, 0.002, str_sub(paste('R^2=',R2 = cor(Qsim, Qobs, use = "complete")^2, sep=' '),1, 9))
text(0.007, 0.001, str_sub(paste('RMSE=',RMSE(Qsim, Qobs),sep=' '),1, 12))
text(0.009, 0.001, str_sub(paste('bias=',Bias(Qsim, Qobs), sep=' '),1, 12))
text(0.007, 0.004, str_sub(paste('k=', k, sep=' '), 1, 8))
text(0.009, 0.004, 'p < 0.05')
- grid用于添加格网线,更美观
- lm用于线性拟合
- lines函数是在已有图绘上增加内容
- paste和str_sub用于连接和截取字符串,来自于stringr包
结果如图:
论文中常见的拟合散点验证图(R语言版)相关推荐
- python画笔的尺寸_Matplotlib 常用画图命令总结:使用 Python 在论文中画出一手漂亮的数据图...
介绍 本文不是一篇详尽的.从简到繁的 Maplotlib 画图教程,而是用各种例子快速直观地让读者上手 Matplotlib 画图中的一些常用的.基础的操作.本文不对各种数据图(折线图.柱状图等)作介 ...
- r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...
前面已经介绍过R语言读取excel的方法了,当然读取数据来说,个人还是推荐csv或txt存储(针对小数据量).大数据量的数据的话建议还是用数据库,此外也可以考虑data.table包读取,这个包也是个 ...
- 论文中常见的制表位的用法——公式居中,编号右对齐
论文中经常会插入很多公式,并在公式末尾为公式编号.要求的格式是公式居中,编号靠右.平时我们常采用文档靠右或者加空格的方式制作.这样一来会出现很多空格字符,为论文基数带来很大不便. 下面使用制表位的方法 ...
- R语言绘制SCI论文中常见的箱线散点图,并自动进行方差分析计算显著性水平
显著性标记箱线散点图 本篇笔记的内容是在R语言中利用ggplot2,ggsignif,ggsci,ggpubr等包制作箱线散点图,并计算指定变量之间的显著性水平,对不同分组进行特异性标记,最终效果如下 ...
- 方差分析中怎么看有无显著性影响_用R语言做单因素方差分析及多重比较
SPSS方差分析的应用已经做得非常好了,绝大多数的方差分析问题均可通过SPSS"点菜单"的方式得以解决,R语言在统计和可视化方面有自己的特色,我们不妨来对比着学习.选用R语言自带案 ...
- rmd中无法打开链结r_从零开始入门R语言—Rstudio下载与安装
注意:在安装Rstudio之前一定要现状R软件. 安装方法: QQ ZHOU:从零开始入门R语言-软件下载及安装zhuanlan.zhihu.com 一.下载安装RStudio 上节我们已经下载了R ...
- Markdown编辑论文中常见公式符号(持续更新)
文章目录 1.幂次方 2.公式下角标 3.希腊字母 4.运算符 5.空格,大空格 6.集合 7.极限 8.分支公式(大括号) 9.中括号矩阵 10.分数 11.取整符号 12.公式中加粗 13.偏导数 ...
- 学术论文中常见的英文简写
1:A.D. 拉丁文:anno Domini 释义:in the year of the Lord 耶稣纪年,公元 2:a.m. 拉丁文:Ante Meridiem 释义:before middday ...
- 英文论文中常见拉丁语/英语缩写整理
1:A.D. 拉丁文:anno Domini 释义:in the year of the Lord 耶稣纪年,公元 2:a.m. 拉丁文:Ante Meridiem 释义:before middday ...
最新文章
- 中国移动宽带业务怎么样?和电信的比有什么不同?
- Js + Css的msn式的popup提示窗口的实现
- Windows XP Professional系统修复的操作方法
- linux删除libc.so.6
- JavaWeb黑马旅游网-学习笔记01【准备工作】
- 《天涯明月刀》窦德斌:美术需要突破自我的局限
- 在django中使用celery
- Java编程中值得注意的对象引用现象
- Apt-get使用指南
- CWinThread
- 【opencv】错误提示OpenCV Error: Assertion failed
- 启动失败java.lang_关于jeesite启动失败的问题java.lang.UnsupportedClassVersionError
- OverflowError: Python int too large to convert to C long
- 课程设计matlab仿真,MATLAB与仿真系统课程设计报告
- 实用工具系列 - Xshell安装下载与使用
- STVP提示The device is protected解决方法
- 孔雀东南飞用mysql存储_【原】一个真实的故事,现实版的《孔雀东南飞》
- SQL(进阶实战05)
- 印象笔记目录导出(失败)
- i.MX6ULL系统移植 | 移植NXP官方linux4.1.15内核