首页 > 解决方案 > 每个类别的几个箱线图、晶须和箱线图不对齐

问题描述

这是我想要的情节:

我想要的情节

到目前为止,这是我的代码(但它没有给我想要的结果):

color_scale_class <- c("#00aedb", "#ff6f69", "#ffcc5c", "#cbe885", "#88d8b0")   
ggplot(fluct_all, aes(x=type, y=test_acc, color=as.factor(fold), fill=type)) +
  stat_boxplot(geom = "errorbar") +
  geom_boxplot(outlier.alpha = 0.01, outlier.size = 0.75) +
  scale_fill_manual(values = color_scale_class,
                    name = "Input Data\nCombination",
                    labels = c("TLS", "TLS & GEO", "TLS & RGB", "ALL")) +
  scale_color_manual(values=rep("black", 5)) +
  theme_light() +
  theme(text = element_text(size = 14, family="Calibri")) +
  scale_x_discrete(labels = c("TLS", "TLS & GEO", "TLS & RGB", "ALL")) +
  xlab("") +
  ylab("Test Accuracy\n") +
  guides(color = "none")

但是,我有几个问题:我希望胡须有小的水平线。我试图这样做,stat_boxplot(geom = "errorbar")但这仅在我保持默认宽度时才有效。我想要0.2的宽度。但是当我这样做时,误差条不会与箱线图水平对齐。

我的第二个问题:我希望每个“折叠”都有一个箱线图,但我希望颜色基于“类型”。我设法通过使用获得了单独的图fill=as.factor(fold),但是我没有设法获得引用“类型”的颜色。

我想避免使用构面,因为我想要一个情节上的所有内容。非常感谢任何帮助!基本上我的问题是我想要几个基于一个变量的箱线图,我用 来实现fill,但我希望颜色实际上是指另一个变量。

我这里有一些虚拟数据:

fluct_all <- data.frame(
  "type" = rep(c("tls", "tls_rgb", "tls_geo", "tls_rgb_geo"), each=50),
  "fold" = rep(1:5, 10),
  "test_acc" = rnorm(200))

编辑:我刚刚有了一个想法并修复了颜色问题(对不起!),但我的胡须stat_boxplot仍然与geom_boxplot.

标签: rggplot2

解决方案


推荐阅读