r - 绘制第三维热图

标签 r plot heatmap

我想绘制这样的热图

enter image description here

我知道如何在 R 中制作普通热图,但不确定如何引入 3D 组件。我想过只使用 3D 条形图,但后来我不确定如何有条件地设置条形颜色。有人可以推荐一个工具来做这样的事情吗? 另一个例子是 here

但它没有根据热图颜色进行着色。

这也可能被称为 3D 直方图。有没有办法在 R 中生成这样的图形(其中框的高度由 1 个变量给出,颜色格式由另一个变量指定?),例如 here

我对 JTT 解决方案的问题是,我需要能够独立于 VA Deaths 变量对 3D 条形进行着色。我有一个 2D 热图(它已经为每个 3D 条设置了颜色)。然后,条形的高度由另一个变量设置。这意味着颜色与高度无关。

最佳答案

3D 条形图可能是一个不错的选择。您可能想要测试的latticeExtra 包中有panel.3dbars()。有关更多示例,请参阅该函数的帮助页面,但以下是根据帮助页面上的示例之一修改的示例:

library(latticeExtra)
# A function generating colors
cols<-function(n) {
   colorRampPalette(c("#FFC0CB", "#CC0000"))(20)                                 # 20 distinct colors
}
# The plot
cloud(VADeaths, panel.3d.cloud = panel.3dbars, col="white",                      # white borders for bars
  xbase = 1, ybase = 1, zlim = c(0, max(VADeaths)),                              # No space around the bars
  scales = list(arrows = FALSE, just = "right"), xlab = NULL, ylab = NULL,
  col.facet = level.colors(VADeaths, at = do.breaks(range(VADeaths), 20),        
                           col.regions = cols,                                   # color ramp for filling the bars
                           colors = TRUE),
  colorkey = list(col = cols, at = do.breaks(range(VADeaths), 20)),
  screen = list(z = 65, x = -65))                                                # Adjust tilting

结果类似于:

enter image description here

请注意,需要将要绘制的数据转换为矩阵才能发挥作用。如果您从 X*Y 网格进行测量,其中 Z 是测量的强度,那么这应该相当容易实现。这里的函数(例如,level.colors())根据数据范围自动决定颜色,但您也可以在绘图之前自己生成颜色。

关于r - 绘制第三维热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033419/

相关文章:

python - 将顶部和底部值标签添加到颜色条

python - 如何将数组绘制为热图时间序列

r - 坐标模糊匹配

使用 tidytext 删除包含停用词的 ngram

python - Jupyter notebook 中的 Matplotlib 动画创建额外的空图

r - 如何在R中创建聚类图?

r - 像 Gephi Force Atlas 2 一样绘制 igraph 网络

r - R中的日期时间转换

r - 如何根据R中的U和V风分量计算风向

r - ggplot2 stat_密度2d 产生奇怪的三角形