Я сделал тепловую карту дифференциальной экспрессии генов между подкластерами клеток из data.frame diffexp
, используя ggplot
и ggplotly()
.
Каждый фрагмент представляет количество генов, которые выражены дифференциальномежду парой подкластеров (показанных как total
во всплывающей подсказке), и NA имеют серый цвет.
cluster.heatmap <-
ggplot(diffexp) +
geom_tile(aes(x = cluster_A, y = cluster_B, fill = total,
text = paste0("up_genes: ", up_genes)),
colour="white", size=0.05) +
scale_fill_viridis_c(begin=0.1, na.value="grey20") +
ggtitle("Differentially Expressed Genes Between Subcluster Pairs")
Когда Iпреобразуйте это в интерактивную тепловую карту, используя ggplotly
, вместо этого NA окрашены в белый цвет:
ggplotly(cluster.heatmap)
Я пытался использовать heatmaply
пакет, но то же самое происходит.
diffexp.spread <- select(diffexp, cluster_A, cluster_B, total) %>%
spread(cluster_B, total) %>% na_if(0)
heatmaply(diffexp.spread, na.color = "grey20")
Что я хотел бы сделать, чтобы решить эту проблему, так или иначе изменить масштабсопоставления цветов так, что 0 отображается на grey20
, а цветовая шкала viridis
начинается с 1.
Я знаю, что должен использовать пакет scales
и, возможно, создать новый цветовой вектор, такойкак
colors.vir <- c("grey20", viridis(256))
scale_fill_gradient(colors = colors.vir,
values = scales::rescale(
(0, 0.1, # grey value limits
1, max(diffexp.spread) # viridis value limits)
)
или что-то подобное выше, но я не могу понять это.