2017-12-02 205 views
-1

我想创建一个带有ggplot2的盒图,并且我想按照数据框的顺序组织图,带ggplot的盒子图和传说标签的顺序

我知道R按字母顺序组织boxplot。我怎样才能:

  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()) 

enter image description here

回答

0

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

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")) 

只需用参数guides(fill=guide_legend(reverse=TRUE)),手动改变颜色顺序和固定与scale_x_discrete X轴的特定顺序来实现的。

enter image description here

也可以与DF$Quality <- factor (DF$Quality, levels = c ("Taste", "Color of package", "Capacity"))重新排序的水平,达到同样的效果,而不使用scale_x_discrete()