Гистограмма с накоплением: Как организовать группы с пакетом forcats - PullRequest
0 голосов
/ 21 февраля 2019

Я работаю над созданием хороших сюжетов, которые я могу копировать и вставлять при необходимости (вот почему я включил так много опций).Итак, у меня есть этот график:

library(tidyverse)
    mtcars %>% 
      group_by(cyl) %>% 
      summarise(n=n()) %>% 
      ungroup() %>% 
      mutate(cars = "cars") %>% 
      ggplot(aes(x = as.factor(cars), y = n, fill=as.factor(cyl))) +
      geom_bar(stat="identity", width = .3) +
      geom_text(aes(label = paste0(round(n, digits = 0), "stk.")),
                position = position_stack(vjust = 0.5)) +
      labs(title = "Number of cars with cylinders in the data set", 
           subtitle= "If needed",
           caption= "Fodnote",
           x= "", y="Antal",
           fill="# of cylinders") +
      theme(#legend.position="none",
            plot.caption = element_text(hjust = 0))

enter image description here

Как я могу изменить порядок стеков, например, синий внизу, затем красный стек изеленый стек сверху.Благодарю.Я думаю, что решение включает в себя forcats ...

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Это то, что вы ищете?Чтобы изменить цвет заливки, используйте scale_fill_manual() или scale_fill_brewer()

library(tidyverse)
library(forcats)

mtcars %>% 
  group_by(cyl) %>% 
  summarise(n=n()) %>% 
  ungroup() %>% 
  mutate(cars = "cars",
         cars = factor(cars),
         cyl  = factor(cyl)) %>% 

  # use fct_reorder here
  mutate(cyl = fct_reorder(cyl, n)) %>% 

  ggplot(aes(x = cars, y = n, fill = cyl)) +
  geom_col(width = .3) +
  geom_text(aes(label = paste0(round(n, digits = 0), "stk.")),
            position = position_stack(vjust = 0.5)) +
  labs(title = "Number of cars with cylinders in the data set", 
       subtitle = "If needed",
       caption = "Footnote",
       x = "", y = "Antal",
       fill = "# of cylinders") +
  theme(#legend.position="none",
    plot.caption = element_text(hjust = 0))

0 голосов
/ 21 февраля 2019

Чтобы определить порядок, конвертируйте cyl в коэффициент с желаемым levels.

df1 = mtcars
df1$cyl = factor(df1$cyl, levels = c(6, 4, 8))
df1 %>% 
    group_by(cyl) %>% 
    summarise(n=n()) %>% 
    ungroup() %>% 
    mutate(cars = "cars") %>% 
    ggplot(aes(x = as.factor(cars), y = n, fill=as.factor(cyl))) +
    #scale_fill_manual(values=c("green", "red", "blue")) +
    geom_bar(stat="identity", width = .3) +
    geom_text(aes(label = paste0(round(n, digits = 0), "stk.")),
              position = position_stack(vjust = 0.5)) +
    labs(title = "Number of cars with cylinders in the data set", 
         subtitle= "If needed",
         caption= "Fodnote",
         x= "", y="Antal",
         fill="# of cylinders") +
    theme(#legend.position="none",
        plot.caption = element_text(hjust = 0))

enter image description here

...