R 堆积条形图

标签 r ggplot2 data.table melt

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 个条形。每个条形都包含三种色调,因为存在三个类(“Class”)。最后,栏的高度是“分数”,并且总是从低级开始到高级。所以它看起来像这样,但这不是正确的比例

enter image description here

最佳答案

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


如果我们想要订购“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()

关于R 堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61047591/

相关文章:

r - 在 r 中添加了置信区间(箱线图和 wisker 图)的 xyplot

r - 将指数添加到轴标签 (R/ggplot2)

r - 使用 data.table 为组的每个元素创建一个 "index"

r - 将函数应用于 data.table 或 data.frame 中的多对列的最优雅方法是什么?

R:在ggplot中的两点之间画一条线

r - 覆盖函数定义的部分

r - 使用 alpha 美学映射的 ggplot2 stat_summary_hex 示例?

r - 如何更改ggplot热图中空单元格的填充颜色

r - 叠加 fiddle 图ggplot2

R data.table 文本解析