如何修改R语言plotrix包中Taylor图参考数据的pch形状与颜色?
修改plotrix包
taylor.diagram中参考点的形状与颜色 以下是两种可行的修改方案,按需选择:
方法一:绘图后覆盖参考点(最简方案)
不需要修改原函数,在第一次绘制泰勒图后,直接用points()函数在参考点位置重新绘制自定义样式的点,覆盖默认的深色圆圈。
操作步骤:
- 先计算参考数据的标准差(参考点的x轴坐标):
sd_ref <- sd(a2) # a2为你的参考数据
- 第一次调用
taylor.diagram()(add=FALSE)完成基础绘图后,立即执行points()覆盖参考点:
library(plotrix) cols <- c("blue", "green", "orange", "purple", "brown", "gray") # 第一次绘制泰勒图 taylor.diagram(ref=a2, model=b2, pos.cor=T, col=cols[1], pch=17, add=FALSE, pcex=3, main="", cex=1.3) # 覆盖参考点:自定义pch形状、颜色和大小 points(sd_ref, 0, pch=15, col="darkred", cex=3) # pch=15为正方形,可按需修改参数 # 后续添加其他模型数据 taylor.diagram(ref=a2, model=c2, pos.cor=T, col=cols[2], pch=17, add=TRUE, pcex=3) # ...其他模型的绘图代码... title(main="Spatial Taylor Diagram of Precipitation (CRU)", cex.main=2) legend("topright",cex=1.8,pt.cex=2,title="GCM-RCM models", legend=c("CNRMr1-ALADIN63","ECEARTHr12-CCLM","HadGEMr1-HIRHAM", "MPIr1-RACMO","NorESMr1-REMO","EOBS"), pch=c(17,17,17,17,17,15),col=cols)
方法二:自定义修改taylor.diagram函数(适合重复调用)
如果需要多次使用自定义样式的参考点,可以修改原函数代码,添加控制参考点样式的参数,一劳永逸。
操作步骤:
- 复制原函数代码并修改关键部分,定义自定义函数:
my_taylor_diagram <- function(ref, model, add = FALSE, pos.cor = TRUE, ref.pch = 19, ref.col = par("fg"), # 新增参考点控制参数 ...) { sd.ref <- sqrt(var(ref, na.rm = TRUE)) sd.mod <- sqrt(var(model, na.rm = TRUE)) cor.ref.mod <- cor(ref, model, use = "pairwise.complete.obs") if (!pos.cor) cor.ref.mod <- -cor.ref.mod x <- sd.mod * cor.ref.mod y <- sd.mod * sqrt(1 - cor.ref.mod^2) if (!add) { max.sd <- max(sd.ref, sd.mod, na.rm = TRUE) plot(c(0, max.sd * 1.1), c(-max.sd * 1.1, max.sd * 1.1), type = "n", xlab = "Standard deviation", ylab = "", asp = 1, ...) symbols(0, 0, circles = max.sd * 1.1, inches = FALSE, add = TRUE) for (i in seq(0, max.sd, length.out = 5)) { symbols(0, 0, circles = i, inches = FALSE, add = TRUE, lty = 2) } abline(h = 0, v = 0) # 修改参考点绘制逻辑,使用自定义参数 points(sd.ref, 0, pch = ref.pch, col = ref.col, ...) } points(x, y, ...) invisible(list(sd.ref = sd.ref, sd.mod = sd.mod, cor = cor.ref.mod)) }
- 使用自定义函数绘图,直接指定参考点样式参数:
library(plotrix) cols <- c("blue", "green", "orange", "purple", "brown", "gray") # 第一次调用自定义函数,指定参考点样式 my_taylor_diagram(ref=a2, model=b2, pos.cor=T, col=cols[1], pch=17, add=FALSE, pcex=3, main="", cex=1.3, ref.pch=18, ref.col="darkblue") # 后续添加其他模型数据 my_taylor_diagram(ref=a2, model=c2, pos.cor=T, col=cols[2], pch=17, add=TRUE, pcex=3) title(main="Spatial Taylor Diagram of Precipitation (CRU)", cex.main=2) legend("topright",cex=1.8,pt.cex=2,title="GCM-RCM models", legend=c("CNRMr1-ALADIN63","ECEARTHr12-CCLM","HadGEMr1-HIRHAM", "MPIr1-RACMO","NorESMr1-REMO","EOBS"), pch=c(17,17,17,17,17,15),col=cols)
内容的提问来源于stack exchange,提问作者kettaren ray
相关产品推荐
相关产品推荐

