有人可以帮助我为数据框着色吗?任何帮助将不胜感激!
答案 0 :(得分:0)
这是使用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()