如何在R中实现Taylor diagram与ggplot绘图的并排展示
你用patchwork拼接失败的核心原因是 openair::TaylorDiagram() 基于R基础绘图系统生成图形,不属于ggplot2对象,patchwork仅支持直接拼接ggplot2对象。
可以借助 gridGraphics 包将基础绘图转换为grid图形对象(grob),之后就可以和ggplot2对象一起排布。
如果未安装依赖包可先运行 install.packages(c("gridGraphics", "patchwork")) 安装。
完整可运行代码如下:
# 加载全部依赖包 library(tidyr) library(openair) library(ggplot2) library(patchwork) library(gridGraphics) library(grid) # 生成plot1(ggplot对象) dat=data.frame( a=runif(10), b=runif(10) ) dat = gather(dat, columnNames, values) colnames(dat)=c("model", "x") dat$b=runif(20) plot1= ggplot(dat, aes(x = x, y = b, group = model, color = model, shape = model)) + geom_point( aes(colour = model)) # 生成plot2(将泰勒图转换为grob对象) dates <- seq(as.Date("2015-01-01"),as.Date("2015-12-31"),1) obs=runif(365) mod=runif(365) model=rep(c("model1","model2"),times=c(150,215)) mod.dat <- data.frame(dates,obs,mod,model) # 先绘制泰勒图,再捕获为grid图形对象 plot.new() TaylorDiagram(mod.dat, obs = "obs", mod = "mod", group = "model") grid.echo() plot2 <- grid.grab() # 并排排布两个图形,可通过widths参数调整两个图的宽度比例 wrap_plots(plot1, plot2, ncol = 2, widths = c(1, 1.2))
内容的提问来源于stack exchange,提问作者b_takhel
相关产品推荐
相关产品推荐

