ТЕПЛОВАЯ КАРТА/GGPLOT R

Я пытаюсь создать тепловую карту уровня компетенции для производственного предприятия. Я пробовал как HEATMAP, так и GGPLOT. У меня есть пара вопросов по поводу использования GGPLOT — вот примеры данных. Я до сих пор не уверен, что даст мне лучший результат.

GROUP       ProcessName        EmployeeName    Level  
Furnace     Machining           Alex             4  
Furnace     Machining           Bobby            1  
Furnace     Milling             Alex             3  
Repair      Heat                Chris            2  
Repair      Heat                Bobby            3  

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

до сих пор я пробовал HEATMAP, HEATMAP.2 - мне что-то не хватает, но я не получаю то, что хотел здесь

Так что я пошел с GGPLOT,

ggplot(test_data, aes(factor(Name),factor(ProcessName),factor(level)) +
    geom_tile() +
    theme(axis.text.x = element_text(angle=45, hjust = 1,vjust=1,face = "bold"),) 

В полученном графике квадраты окрашены во всех местах.

я ищу

  1. Где каждый квадрат окрашен в зависимости от уровня
  2. определенные цвета для каждого уровня (здесь я попробовал scale_color_manual - но это не меняется)
  3. один квадрат для работника и этого конкретного процесса.

Пожалуйста, предложите, если мне нужно посмотреть на что-то другое.


person Neo    schedule 05.08.2020    source источник
comment
вам нужно использовать fill = level в aes   -  person Richard Telford    schedule 05.08.2020
comment
я пробовал это, и все же цветные поля не структурированы должным образом, например, если я смотрю на поле для комбинации имени и процесса - цвет заливки составляет только одну четверть этого прямоугольника   -  person Neo    schedule 05.08.2020


Ответы (1)


Это работает для меня.

Вам нужно только сделать ProcessName и т. д. фактором, если вы хотите изменить порядок, и это, вероятно, лучше всего сделать до ggplot.

Вы можете изменить заливку с помощью одной из функций scale_fill_*.

library("tidyverse")
test_data <- read_table(
"GROUP       ProcessName        EmployeeName    Level  
Furnace     Machining           Alex             4  
Furnace     Machining           Bobby            1  
Furnace     Milling             Alex             3  
Repair      Heat                Chris            2  
Repair      Heat                Bobby            3")  


ggplot(test_data, aes(x = EmployeeName, y = ProcessName, fill = Level)) +
   geom_tile() +
   theme(axis.text.x = element_text(angle=45, hjust = 1, vjust=1, face = "bold")) 

Создано 05 августа 2020 г. в пакете reprex (v0.3.0)

person Richard Telford    schedule 05.08.2020
comment
Спасибо, Ричард - на изображении выше, если вы видите, что я бы Алекс и Хит представляли 1 квадрат, аналогично поле для имени и имени процесса и цвет этого поля - может ggplot сделать это - person Neo; 05.08.2020
comment
Ричард Телфорд: По сути, я хочу раскрасить поля/плитки/квадраты для конкретной комбинации имени и имени процесса, поэтому на графике выше первое поле должно представлять Алекса и Хит, второе поле будет Бобби и Хит и т. д. и так далее - как мне это сделать в ggplot, где я борюсь с - person Neo; 05.08.2020
comment
Вы можете отключить фоновую сетку, если она вам не нужна. Добавить theme(panel.grid = element_blank()) - person Richard Telford; 06.08.2020
comment
Спасибо, Ричард - у меня слишком много имен сотрудников и названий процессов, и они делают график переполненным на метках оси x - есть ли простой способ сделать это - person Neo; 06.08.2020
comment
Поворот меток на вертикальные помогает, тогда вы можете уменьшить размер шрифта или увеличить график, но если у вас их действительно слишком много, вам нужно либо сделать несколько графиков, либо отказаться от имен (возможно, показать по отделам) - person Richard Telford; 06.08.2020