前言
在上一期推文:tidyHeatmap(一):帶你繪制高端熱圖中昔字,Immugent簡單介紹了一下tidyHeatmap包的基礎使用境输。在本期推文中艰争,Immugent將會進一步對其個性化功能進行講解雁刷。
在跑本期代碼之前福铅,Immugent建議最好還是將上一期的tidyHeatmap教程跑一下弟胀。因為這期代碼的很多參數基本都是在上一期的基礎上做了調整,如果直接跑本期代碼很可能理解不了其中很多參數的用途眉厨。
代碼展示
首先還是需要讀入示例數據锌奴。。憾股。
devtools::install_github("stemangiola/tidyHeatmap")
library(tidyHeatmap)
mtcars_tidy <-
mtcars |>
as_tibble(rownames="Car name") |>
# Scale
mutate_at(vars(-`Car name`, -hp, -vs), scale) |>
# tidyfy
pivot_longer(cols = -c(`Car name`, hp, vs), names_to = "Property", values_to = "Value")
mtcars_tidy
添加多種信息鹿蜀,繪制多元化熱圖。
# Create some more data points
pasilla_plus <-
tidyHeatmap::pasilla |>
dplyr::mutate(act = activation) |>
tidyr::nest(data = -sample) |>
dplyr::mutate(size = rnorm(n(), 4,0.5)) |>
dplyr::mutate(age = runif(n(), 50, 200)) |>
tidyr::unnest(data)
# Plot
pasilla_plus |>
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`,
scale = "row"
) |>
add_tile(condition) |>
add_point(activation) |>
add_tile(act) |>
add_bar(size) |>
add_line(age)
Add a layer on top of the heatmap
tidyHeatmap::pasilla |>
# filter
filter(symbol %in% head(unique(tidyHeatmap::pasilla$symbol), n = 10)) |>
heatmap(
.column = sample,
.row = symbol,
.value = `count normalised adjusted`,
scale = "row"
) |>
layer_point(
`count normalised adjusted log` > 6 & sample == "untreated3"
)
Adding heatmap side-by-side
p_heatmap = heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row")
p_heatmap + p_heatmap
External ComplexHeatmap functionalities
heatmap(mtcars_tidy, `Car name`, Property, Value, scale = "row" ) %>% as_ComplexHeatmap() %>% ComplexHeatmap::draw(heatmap_legend_side = "left" )
Using patchwork to integrate heatmaps
library(ggplot2)
library(patchwork)
p_heatmap =
mtcars_tidy |>
heatmap(
`Car name`, Property, Value,
scale = "row",
show_heatmap_legend = FALSE,
row_names_gp = gpar(fontsize = 7)
)
p_ggplot = tibble(value = 1:10) %>% ggplot(aes(value)) + geom_density()
wrap_heatmap(p_heatmap) +
p_ggplot +
wrap_heatmap(p_heatmap) +
plot_layout(width = c(1, 0.3, 1))
小結
想必大家在看高分文獻中的熱圖時都會覺得很美觀服球,能很好的展示要重點突出的信息茴恰。而自己繪制的熱圖卻很丑,而且重點不突出有咨,這些其實是可以自我調整進行改善的琐簇。
繪制出美觀的熱圖主要依賴于亮點:第一點就是自己的數據,如果數據沒有太明顯的差異座享,再怎么美化也不會出很好的熱圖婉商;第二點就是配色上,除了要選擇對比明顯的配色渣叛,還需要考慮整篇文章中的主題使用顏色丈秩,這樣才不會太顯得太突兀。無論從使用簡易程度上還是配色上淳衙,tidyHeatmap包是大家的不二選擇蘑秽,小伙伴們趕緊實操起來吧!
好啦箫攀,本期分享到這就結束了肠牲,歡迎大家有好的繪圖軟件推薦給我們~~