在数据可视化领域,热图是一种常用的工具,用于呈现大量的复杂数据。R语言提供了多种生成热图的方法,包括基础R的heatmap()函数、ggplot2的geom_tile()函数、lattice的levelplot()函数,以及为R创建的交互式热图包plotly、d3heatmap和heatmaply。每种方法都有其优点和限制,选择哪种方法取决于特定的需求和数据类型。
在这些工具中,我们现在要介绍一个新的R包,名为FunkyHeatmap。FunkyHeatmap是一个用于生成数据框热图的工具,可以通过提供列和行的注释来进行微调,从而允许为多个调色板或几何形状分配或将行和列按类别分组。FunkyHeatmap的一个主要优点是其可自定义性。例如,您可以为热图中的每一列定义不同的几何形状、颜色调色板和选项,这可以通过列信息参数实现。您也可以将列分组,并为每个组指定一个调色板。同样,您也可以为行定义分组。FunkyHeatmap还允许您指定不同的调色板,以实现热图的颜色定制。
FunkyHeatmap的灵活性使其在需要高度定制化热图的情况下,可能优于其他工具。例如,如果您需要在热图中使用不同的调色板和几何形状,或者需要对行和列进行分组,那么FunkyHeatmap可能是一个非常合适的选择。然而,需要注意的是,FunkyHeatmap可能在一些方面不如其他工具。例如,基础R的heatmap()函数和heatmaply包提供了聚类和归一化的选项,而FunkyHeatmap并没有提供这些功能。此外,plotly、d3heatmap和heatmaply可以创建交互式热图,而FunkyHeatmap目前看来并不支持这种交互性。
总的来说,FunkyHeatmap是一个强大且高度可定制的R热图工具,尤其适合需要细致调整热图视觉效果的场合。然而,对于需要聚类、归一化或交互功能的项目,可能需要考虑使用其他R热图工具。
示例:
1. 安装 - install.packages("funkyheatmap")
复制代码 2. 加载及示例
- library(funkyheatmap)
- library(dplyr, warn.conflicts = FALSE)
- library(tibble, warn.conflicts = FALSE)
- data("mtcars")
- funky_heatmap(mtcars)
复制代码
3.高阶用法
- data <- mtcars %>%
- rownames_to_column("id") %>%
- arrange(desc(mpg))
- column_info <- tribble(
- ~id, ~group, ~name, ~geom, ~palette, ~options,
- "id", "", "", "text", NA, list(hjust = 0, width = 6),
- "mpg", "overall", "Miles / gallon", "bar", "palette1", list(width = 4, legend = FALSE),
- "cyl", "overall", "Number of cylinders", "bar", "palette2", list(width = 4, legend = FALSE),
- "disp", "group1", "Displacement (cu.in.)", "funkyrect", "palette1", lst(),
- "hp", "group1", "Gross horsepower", "funkyrect", "palette1", lst(),
- "drat", "group1", "Rear axle ratio", "funkyrect", "palette1", lst(),
- "wt", "group1", "Weight (1000 lbs)", "funkyrect", "palette1", lst(),
- "qsec", "group2", "1/4 mile time", "circle", "palette2", lst(),
- "vs", "group2", "Engine", "circle", "palette2", lst(),
- "am", "group2", "Transmission", "circle", "palette2", lst(),
- "gear", "group2", "# Forward gears", "circle", "palette2", lst(),
- "carb", "group2", "# Carburetors", "circle", "palette2", lst()
- )
复制代码
参考链接:https://github.com/funkyheatmap/funkyheatmap
|