Цветная рамка данных по строкам - PullRequest
0 голосов
/ 05 июня 2019

Может ли кто-нибудь помочь мне с раскраской данных? Любая помощь будет оценена!

1 Ответ

0 голосов
/ 06 июня 2019

Вот подход с ggplot и dplyr.

Сначала я преобразую данные в длинный формат, по одной букве на строку таблицы, с числовым столбцом и координатами строки.

library(dplyr); library(ggplot2)
ltrs_tidy <- alpha_ltrs %>%
  rownames_to_column(var = "row") %>%
  mutate_all(as.character) %>%
  tidyr::gather(col, ltr, -row) %>%
  mutate_at(vars(c("row", "col")), 
            ~str_remove(., "r|c") %>% as.integer)

Затем я вычисляю, какие цвета использовать, добавляя новый столбец, показывающий значение строки 2 для этого столбца, и затем определяю правила в операторе case_when.

ltrs_tidy2 <- ltrs_tidy %>%
  left_join(ltrs_tidy %>% filter(row == 2) %>% select(col, ltr_row2 = ltr), by = "col") %>%
  mutate(fill_calc = case_when(
    row == 1         ~ "white",
    row == 2         ~ "blue",
    ltr %in% c(".")  ~ "white",
    ltr == ltr_row2  ~ "blue",
    TRUE             ~ "red"
  ))

Наконец, я рисую заштрихованные geom_tile и geom_text в каждом месте.

ggplot(ltrs_tidy2, aes(col, row, label = ltr, fill = fill_calc)) +
  geom_tile(alpha = 0.5) +
  geom_text(size = 2.5, family = "mono") +
  scale_y_reverse() +
  scale_fill_identity() +
  coord_fixed(ratio = 2) +
  theme_minimal()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...