在 r 中的一个图中绘制多种方法的交叉验证结果

Plot cross validation results of multiple methods in one plot in r

我想在 r 中绘制一个绘图,如下所示:

绘制上面预期情节的数据是这样的:

# Logistic Regression 3-fold cross validation scores for Methods 1,2 and 3
Method1_LR <- c(40,50,60)
Method2_LR <- c(70,50,60)
Method3_LR <- c(30,50,40)

# Random Forest 3-fold cross validation scores for Methods 1,2 and 3
Method1_RF <- c(70,50,60)
Method2_RF <- c(40,50,60)
Method3_RF <- c(30,50,40)

对于每种方法(有 3 种),绘制逻辑回归(在图中用 LR 表示)和随机森林(在图中用 RF 表示)的 3 折交叉验证分数。目的是通过绘制每种方法的交叉验证分数的最小值、最大值和平均值来绘制每种方法的交叉验证分数。在图中我们可以看到逻辑回归设置中的 Method_1,最小值为 40,最大值为 60,所有 3 个值的平均值恰好为 50。方法 1 的平均值显示为正方形,最小值和最大值是从正方形延伸的线的尖端。对于方法 1、2 和 3,图上的标记应该在 x 轴上分开,但不要分开得太远,以至于标记会在图表的随机森林结果侧看起来。绘图的 RF 侧也是如此。

我们可以从 ls 中获取所有 'Method' 对象的值,将 mget 作为 list,将 list 转换为两列数据集(enframe),separate列'name'一分为二,使用geom_boxplot from ggplot2

library(dplyr)
library(tidyr)
library(ggplot2)
library(tibble)
mget(ls(pattern='^Method\d+_[A-Z]+$'))  %>%
     enframe %>%
     unnest(value) %>%
     separate(name, into = c("method", "cat"), sep="_") %>% 
     ggplot(aes(x = cat, y = value, fill = method)) + 
      geom_boxplot() + 
      theme_bw()

-输出