0
点赞
收藏
分享

微信扫一扫

拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化

 

这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库。

本文希望SOM的结果以六边形热图可视化。让我向您展示如何在R中创建六边形热图!

拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化_数据

您必须根据自组织神经网络(SOM)的结果来创建自己的变量 。输入变量 ​​Heatmap_Matrix​​ 变量是一个矩阵,可以作为热图的数字表示。

因此,矩阵具有与SOM映射相同的行数和与SOM映射相同的列数,并且热图中的每个值表示一个六边形的值。这里 ​​[1,1]​​​ 将成为左下节点(第一行,第一列),​​[1,2]​​​ 将成为右侧的节点, 将成为 ​​[2,1]​​ 第二行中左侧的第一个节点,依此类推。因此,从视觉上看,顺序从左下到右上,而在矩阵中,则从左上到右下。

  1.  library(RColorBrewer) #使用brewer.pal
  2.  library(fields) #使用designer.colors
  3.   
  4.  #为每个六角形创建多边形的功能
  5.   
  6.  #从一个矩阵开始,该矩阵将作为您的热图的数字表示形式,称为Heatmap_Matrix
  7.   
  8.   
  9.  x <- as.vector(map_Matrix)
  10.   
  11.  #此矩阵具有与SOM映射相同的行数和与SOM映射相同的列数,并且热图中的每个值表示一个六边形的值
  12.   
  13.   
  14.  #在这里[1,1]将成为左下节点(第一行,第一列),[1,2]将成为右节点[2,1]将成为第二行左侧的第一个节点
  15.   
  16.   
  17.  #因此,从视觉上看,可以从左下到右上工作
  18.   
  19.   
  20.   
  21.  #SOM的行数和列数
  22.   
  23.   
  24.  Rows <- dim(map_Matrix)[1]
  25.  Columns <- dim(map_Matrix)[2]
  26.   
  27.  #为图例腾出空间
  28.   
  29.   
  30.  par(mar = c(0.2, 2, 2, 7))
  31.   
  32.  #启动绘图窗口,但确实显示绘图上的所有轴或点
  33.   
  34.   
  35.  plot(0, 0, type = "n", axes = FALSE, xlim=c(0, Columns),
  36.  ylim=c(0, Rows), xlab="", ylab= "", asp=1)
  37.   
  38.  #创建调色板
  39.   
  40.   
  41.  #我使用designer.colors在Brewer中允许的最大数量的数值之间插入50种颜色
  42.   
  43.   
  44.   
  45.  ColRamp <- rev(designer.colors(n=50, col=brewer.pal(9, "Spectral") )
  46.   
  47.  #制作一个向量,其长度(ColRamp)的bin数在x的最小值与最大值之间.
  48.  #接下来,将x中的每个点与ColorRamp中的一种颜色进行匹配
  49.   
  50.  ColorCode <- rep("#FFFFFF", length(x)) #默认为全白
  51.   
  52.   
  53.  for (i in 1:length(x))
  54.  if (!is.na(x[i])) ColorCode[i] <- ColRamp[which.min(abs(Bins-x[i]))]
  55.   
  56.  #在图上实际绘制六角形多边形
  57.   
  58.   
  59.  offset <- 0.5 #向上移动时六边形的偏移量
  60.   
  61.   
  62.  for (row in 1: Rows) {
  63.  for (column in 0:( Columns - 1))
  64.  agon(column + offset, row - 1, col = ColorCode[row + Rows * column])
  65.  offset <- ifelse(offset, 0, 0.5)
  66.  }
  67.   
  68.  #在右侧添加图例
  69.   
  70.  image(legend.only=TRUE, col=ColRamp, zlim=c(min(x, na.rm=T), max(x, na.rm=T)))

拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化_图例_02

能够读取颜色含义的图例

在最后,创建图例,您将获得与上图类似的热图。

希望我的解释和代码能帮助您在R中创建自己漂亮的热图。

拓端tecdat|如何在R语言中建立六边形矩阵热图heatmap可视化_图例_03

举报

相关推荐

0 条评论