R堆积条形图

问题描述 投票:1回答:1
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轴为“等级”,每个等级为1条。每个条包含三个颜色阴影,因为存在三个类(“类”)。最后,条形的高度为“得分”,并且总是从低等级到高等级开始。所以看起来像这样,但这不是适当的大小

enter image description here

r ggplot2 data.table melt
1个回答
1
投票

我们可以使用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()

enter image description here


如果要订购“班级”,请根据“得分”值以该顺序指定的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()
© www.soinside.com 2019 - 2024. All rights reserved.