首页 > 解决方案 > R中一个图中的多个泰勒图?

问题描述

我正在尝试taylor diagramdata.frame (i.e., Precipitation, Max_Temp, and Min_temp)相同figure的 . 每个data.frame都有一个ref observation并由model outputs表示(A1,G2, and G3)。任何帮助,将不胜感激。

library(tidyverse)
library(plotrix)

set.seed(123)

precipitation <- data.frame(Ref = runif(730,1,5), A1 = runif(730,0,8), G2 = runif(730,2,6), G3 = runif(730,1,7)) 
Max_Temp <-  data.frame(Ref = runif(730,-5,30), A1 = runif(730,-8,32), G2 = runif(730,-2,28), G3 = runif(730,-10,25))
Min_Temp <-  data.frame(Ref = runif(730,-20,5), A1 = runif(730,-25,10), G2 = runif(730,-25,6), G3 = runif(730,-15,10))

我尝试了代码来绘制降水图,但出现错误。

precipitation %>% 
  pivot_longer(names_to = "Models", values_to = "values", -Ref) %>% 
  taylor.diagram(Ref, values, col = Models)

我想要一个如下图 在此处输入图像描述

标签: rdataframeggplot2facet-wrapplotrix

解决方案


我不确定您的示例数据是否会产生您期望的图,但您可以尝试为每个模型过滤数据框并使用该add = TRUE选项覆盖同一图上的点。另外,我认为爆炸管道会有所帮助(%$%),我刚刚了解到它在文档中实际上被称为“展示管道” :

library(tidyverse)
library(plotrix)
library(magrittr)

set.seed(123)
precipitation <- data.frame(Ref = runif(730,1,5), A1 = runif(730,0,8), G2 = runif(730,2,6), G3 = runif(730,1,7)) 
Max_Temp <-  data.frame(Ref = runif(730,-5,30), A1 = runif(730,-8,32), G2 = runif(730,-2,28), G3 = runif(730,-10,25))
Min_Temp <-  data.frame(Ref = runif(730,-20,5), A1 = runif(730,-25,10), G2 = runif(730,-25,6), G3 = runif(730,-15,10))

precipitation %>% 
  pivot_longer(names_to = "Models", values_to = "values", -Ref) %>% 
  filter(Models == "A1") %$%
  taylor.diagram(Ref, values, col = "blue", pch = 1)

precipitation %>% 
  pivot_longer(names_to = "Models", values_to = "values", -Ref) %>% 
  filter(Models == "G2") %$%
  taylor.diagram(Ref, values, col = "red", pch = 2, add = TRUE)

precipitation %>% 
  pivot_longer(names_to = "Models", values_to = "values", -Ref) %>% 
  filter(Models == "G3") %$%
  taylor.diagram(Ref, values, col = "green", pch = 3, add = TRUE)

示例_2.png


推荐阅读