首页 > 解决方案 > 从频率矩阵创建简单热图的问题

问题描述

我正在尝试从以下矩阵 (bnc) 创建热图:

基本上看起来像这样(这里是另一个频率矩阵):

我正处于尝试创建热图的第一阶段,尚未弄清楚有关色阶和 NA 值变黑的详细信息。

当我运行热图功能时:

heatmap(bnc)

我收到以下错误:

Error in hclustfun(distfun(if (symm) x else t(x))) : 
  NA/NaN/Inf in call to external function (argument 10)

有人可以帮我弄清楚这里出了什么问题吗?

最好的

卡梅伦

编辑:这是我的数据框的 dput() :

structure(c(NA, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 2, NA, 
0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, NA, 0, 0, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 2, 8, 1, NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
6, 3, 0, 0, NA, 2, 0, 0, 0, 0, 0, 0, 0, 1, 2, 8, 0, 0, 1, NA, 
0, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 
0, 0, 1, 6, 0, 0, 1, 0, 0, NA, 0, 0, 0, 1, 0, 0, 2, 1, 0, 0, 
0, 1, 0, 0, NA, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, NA, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(14L, 14L), .Dimnames = list(
    c("WILL_", "WOULD_", "MAY_", "MIGHT_", "CAN_", "COULD_", 
    "SHALL_", "SHOULD_", "MUST_", "OUGHT TO_", "USED TO_", "HAVE TO_", 
    "GOING TO_", "BE ABLE TO_"), c("_WILL", "_WOULD", "_MAY", 
    "_MIGHT", "_CAN", "_COULD", "_SHALL", "_SHOULD", "_MUST", 
    "_OUGHT TO", "_USED TO", "_HAVE TO", "_GOING TO", "_BE ABLE TO"
    )))

PS:我希望我的热图显示完全由 NA 值组成的列。

标签: rmatrixheatmapfrequency

解决方案


你可以试试ggplot2

reshape2::melt(df, value.name = "Freq") %>%
  mutate(label = ifelse(is.na(Freq), "NA", as.character(Freq))) %>%
  ggplot(aes(Var1, Var2)) +
  geom_tile(aes(fill = Freq), color = "white") +
  geom_text(aes(label = label), color = "white") +
  scale_fill_gradient(low = "blue", high = "red", na.value = "black") +
  scale_x_discrete(NULL, expand = c(0, 0)) +
  scale_y_discrete(NULL, expand = c(0, 0)) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

在此处输入图像描述


推荐阅读