R: график ggplot с «вложенными» переменными - PullRequest
1 голос
/ 23 февраля 2020

Надеюсь, я смогу объяснить это правильно. Мои данные можно увидеть на двух уровнях: у меня есть четыре основные категории, каждая из которых состоит из четырех подкатегорий.

В моем наборе данных у меня есть около 50 наблюдений, каждое наблюдение можно отсортировать в одну основную категорию и одну из подкатегорий. соответственно. Следующее изображение отображает мои категории:

1. MainCategory 1
 - Subcategory 11
 - Subcategory 12
 - Subcategory 13
 - Subcategory 14

2. MainCategory 2
 - Subcategory 21
 - Subcategory 22
 - Subcategory 23
 - Subcategory 14

  etc...

Один datarow может быть отображен следующим образом:

ID    Maincategory      Subcategory
#1    Maincategory2     Subcategory 23
#2    Maincategory2     Subcategory 21
#3    Maincategory4     Subcategory 44

Теперь моей целью было использовать geom_bar() из ggplot для оценки моих датаров. Он должен состоять из 4 баров, каждый для основных категорий. Внутри этого бара должно быть указано количество подкатегорий в сложенном виде. Таким образом, каждый столбец представляет количество основных категорий, и внутри каждого бара ift отличается от количества подкатегорий

Моя попытка заключается в следующем: (MWE добавлено)

readr::read_table(
"   ID      Main                 Sub    
    1       Tool View            Information Processing Tool
    2       Ensemble View        Embedded System
    3       Computational View   Model
    4       Tool View            Social Relations
    6       Tool View            Information Processing Tool
    7       Tool View            Productivity Tool
    8       Nominal View         Absent Technology
    9       Ensemble View        Embedded System
    10      Nominal View         Absent Technology
    11      Tool View            Social Relations
    14      Tool View            Productivity Tool
    15      Proxy View           Technology Perception
    17      Proxy View           Computer Perception
    16      Computational View   Algorithm"
)  %>% 
  ggplot() + 
  aes(Main, Sub, fill=Main) + 
  geom_bar(stat="identity", position = "stack", alpha=1, width =.6,aes(fill=Main),color="white") 

Это приводит к следующее: enter image description here

Однако я хотел добиться чего-то подобного, где я также пишу метку (например, Subcategory21) непосредственно в виде диаграммы, как это было здесь:

enter image description here

1 Ответ

1 голос
/ 23 февраля 2020

Как уже упоминалось другими, было бы полезно иметь более четкое представление о том, что вам нужно, и код для воспроизведения.

Вот подход, который может помочь в дальнейшем обсуждении того, что вам может понадобиться.

Редактировать : добавлена ​​цветовая палитра для настройки цветов. После определения цветов, которые вы хотите для своих подкатегорий, используйте scale_fill_manual на своем графике, как показано ниже.

library(tidyverse)

Palette <- c("Algorithm" = "#ff0000", 
             "Model" = "#ff6600",
             "Embedded System" = "#99ff33", 
             "Absent Technology" = "#ffff00",
             "Technology Perception" = "#003399", 
             "Information Processing" = "#cc99ff",
             "Productivity Tool" = "#cc00ff", 
             "Social Relations" = "#cc0066")

readr::read_table(
  "ID     Main                 Sub    
1       Tool View            Information Processing Tool
2       Ensemble View        Embedded System
3       Computational_View   Model
4       Tool View            Social Relations
5       Tool View            Productivity Tool
6       Tool View            Information Processing Tool
7       Tool View            Productivity Tool
8       Nominal View         Absent Technology
9       Ensemble View        Embedded System
10      Nominal View         Absent Technology
11      Tool View            Social Relations
12      Tool View            Productivity Tool
13      Tool View            Productivity Tool
14      Tool View            Productivity Tool
15      Proxy View           Technology Perception
16      Computational_View   Algorithm"
)  %>% 
  ggplot(aes(x = Main, fill = Sub, label = str_wrap(Sub, 10))) + 
    geom_bar(position = "fill") +
    geom_text(stat = 'count', position = position_fill(vjust = .5)) +
    scale_fill_manual(name = "Sub", values = Palette)

График

plot with subcategories with customized colors based on palette

...