使用 ggplot 的箱线图和图例标签的顺序

Dan*_* C. 0 r legend ggplot2 boxplot

我想创建一个箱线图,ggplot2并且我想按照数据框的顺序组织图,例如

我知道 R 按字母顺序组织箱线图。我怎么能够:

  1. 按味道 - 颜色 - 容量的顺序组织 X 轴
  2. 交换盒子,即先是绿色,然后是橙色,而不是橙色和绿色
  3. 也切换图例顺序,首先是 NaCl,然后是 O_{2}
library(ggplot2)
library(readxl)

Chemical <- rep(c("NaCl", "Al2"), times = 3, each = 4)
Quality <- rep(c("Taste", "Color of package", "Capacity"), times = 1, each = 8)
Accepted <- seq(0, 100, by = 100/23)

DF <- data.frame(Chemical, Quality, Accepted)

ggplot(DF, aes(x = Quality, y = Accepted, fill = Chemical)) +
  geom_boxplot() +
  scale_fill_manual(values = c("orange", "green"),
                     labels = expression("Al"[2], "NaCl")) +
  xlab("") +
  theme(legend.position = "top", legend.title = element_blank())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Per*_*reG 6

您可以使用不同的方法来控制输出。一个快速的解决方案是:

ggplot(DF, aes(x = Quality, y = Accepted, fill = Chemical)) +
geom_boxplot() +
scale_fill_manual(values = c("green", "orange"),
                labels = expression("Al"[2], "NaCl")) +
xlab("") +
theme(legend.position = "top", legend.title = element_blank()) + 
guides(fill=guide_legend(reverse=TRUE)) +
scale_x_discrete(limits=c("Taste", "Color of package", "Capacity"))
Run Code Online (Sandbox Code Playgroud)

只需使用参数guides(fill=guide_legend(reverse=TRUE)),即可手动更改颜色顺序并固定 X 轴上的特定顺序scale_x_discrete

在此输入图像描述

也可以使用 重新排序级别DF$Quality <- factor (DF$Quality, levels = c ("Taste", "Color of package", "Capacity"))并在不使用 的情况下获得相同的结果scale_x_discrete()