可视化选择数据框不同行的多个箱线图

Visualize multiple box plot selecting differents rows of a dataframe

我正在开发 EDA(分布算法估计)。我得到了具有不同配置的 Pareto Front 解决方案的所有度量。

我有一个包含所有值的结构:

> metrics20
# A tibble: 320 x 6
   File           Hypervolume `Modified Hypervolume` Spread Spacing  Time
   <chr>                <dbl>                  <dbl>  <dbl>   <dbl> <dbl>
 1 001-unif-0.csv       25771                 26294.   391.    30.1  16.8
 2 002-unif-0.csv       27481                 28416.   534.    41.1  16.5
 3 003-unif-0.csv       26394                 26842.   356.    29.6  16.5
 4 004-unif-0.csv       30828                 31696    418.    38.0  16.5
 5 005-unif-0.csv       28146                 28727    444.    34.2  16.6
 6 006-unif-0.csv       30176                 31006    451.    50.1  16.6
 7 007-unif-0.csv       29374                 30216    537.    35.8  16.5
 8 008-unif-0.csv       27434                 28156.   439.    31.4  16.5
 9 009-unif-0.csv       28944                 29426    471.    33.7  16.4
10 010-unif-0.csv       28339                 29302.   576.    44.3  16.4

我想通过这种方式可视化这些值。我以 Hipervolume 列为例,我按文件列值拆分数据:-unif-, -sat-, -eff--prod- 分布,并在 x 轴上显示 -0.csv,-0.25.csv,-0.5.csv-0.75.csv 的值对于相同的分布。

可重现的例子:

library(readr)
metrics20 <- read_csv("./metrics20.csv")

数据:Link

希望这是朝着您的目标迈出的一步:

library(readr)
library(dplyr)
library(ggplot2)

metrics20 <- read_csv("metrics20.csv")

metrics20 %>% 
  mutate(tag = factor(gsub("(^\d+-)(\w+)(-.*$)", "\2", .$File), levels = c("unif", "sat", "eff", "prod")),
         level = gsub("(^\d+-\w+-)(.*)(\.csv$)", "\2", .$File)) %>%
  ggplot(aes(x = level, y = Hypervolume)) +
  geom_boxplot() +
  facet_wrap(~tag, nrow = 1)+
  theme_minimal() +
  theme(panel.border = element_rect(colour = "black", fill = NA),
        panel.grid = element_blank())

如果您需要将其调整为更像示例图,您可能还需要从这里调整其他内容。您应该能够在所用函数的帮助中找到所有后续步骤。