R Stacked Bar Plot - PullRequest
       38

R Stacked Bar Plot

1 голос
/ 05 апреля 2020
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))

Я искренне извиняюсь c, если это уже было опубликовано, но я его не видел. Я sh подготовлю столбчатую диаграмму в виде оси там, где ось Х - «Оценка», а каждая оценка - 1 бар. Каждый бар содержит три цветовых оттенка, потому что есть три класса («Класс»). Наконец, высота бара - «Оценка», и она всегда начинается с низкого класса до высокого. Так что это будет выглядеть примерно так, но это не в правильном масштабе

enter image description here

1 Ответ

1 голос
/ 05 апреля 2020

Мы можем использовать 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()
...