R 堆积条形图

R Stacked Bar Plot

data1=data.frame("Grade"=c(1,1,1,2,2,2,3,3,3),
"Class"=c(1,2,3,1,2,3,1,2,3),
"Score"=c(6,9,9,7,7,4,9,6,6))

如果这已经发布但我没有看到,我深表歉意。我希望准备一个堆积条形图,其中 X 轴为 'Grade',每个等级为 1 个条形图。每个条包含三种颜色深浅,因为有三个 classes ('Class')。最后柱的高度是 'Score',它总是从低 class 开始到高。所以它看起来像这样但这不是正确的比例

我们可以使用 xtabs 将数据转换为宽格式,然后应用 barplot

barplot(xtabs(Score ~ Grade + Class, data1), legend = TRUE,
         col = c('yellow', 'red', 'orange'))

或使用ggplot

library(dplyr)
library(ggplot2)
data1 %>% 
   mutate_at(vars(Grade, Class), factor) %>%
   ggplot(aes(x = Grade, y = Score, fill = Class)) + 
          geom_col()


如果我们要为 'Class' 排序,请根据 'Score' 值

转换为 factor,并在该顺序中指定 levels
data1 %>% 
   mutate(Class = factor(Class, levels = unique(Class[order(Score)])), 
          Grade = factor(Grade)) %>%  
   ggplot(aes(x = Grade, y = Score, fill = Class)) + 
           geom_col()