Постройте горизонтальную гистограмму со значениями по умолчанию в R - PullRequest
0 голосов
/ 06 мая 2020

У меня есть такой DF:

df_test <- data.frame (ID  = c(88888, 99999),
                   Cluster1 = c(0, 1),Cluster2 = c(0, 2),Cluster3 = c(1, 3)
                   )

     ID Cluster1 Cluster2 Cluster3
1 88888        0        0        1
2 99999        1        2        3

Теперь мне нужна горизонтальная гистограмма с кластерами на оси y. Все бары должны go от 0 до 3 (мин - макс), потому что это диапазон кластеров. В качестве цвета я хочу иметь три градации: 0-1 красный, 1-2 желтый и 2-3 зеленого. Значения из DF должны отображаться в виде стрелки или линии на общей панели. Это как-то возможно с ggplot2?

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете использовать здесь geom_col следующий пример: https://ggplot2.tidyverse.org/reference/geom_bar.html

library(dplyr)
library(tidyr)
library(ggplot2)

Сначала сделайте данные аккуратными:

df <- df_test %>% pivot_longer(cols = 2:4,
                         names_to = "Cluster", 
                         values_to = "value")

Сохраните наибольший из каждого кластера для построения гистограммы:

df <- df %>% group_by(Cluster) %>% 
  filter(value == max(value)) %>% 
  ungroup() %>% 
# identify color scheme:
  mutate(cols = case_when(value <=1 ~ "red",
                     value > 1 & value <= 2 ~ "yellow",
                     value > 2 ~ "green"))

ggplot(df) + geom_col(aes(x = value, y=Cluster, fill = Cluster)) + 
  scale_colour_manual(
    values = df$cols,
    aesthetics = c("colour", "fill")
  )

enter image description here

...