原文链接:
http://tecdat.cn/?p=18879tecdat.cn
这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库。
本文希望SOM的结果以六边形热图可视化。让我向您展示如何在R中创建六边形热图!
您必须根据自组织神经网络(SOM)的结果来创建自己的变量 。输入变量 Heatmap_Matrix
变量是一个矩阵,可以作为热图的数字表示。
因此,矩阵具有与SOM映射相同的行数和与SOM映射相同的列数,并且热图中的每个值表示一个六边形的值。这里 [1,1]
将成为左下节点(第一行,第一列),[1,2]
将成为右侧的节点, 将成为 [2,1]
第二行中左侧的第一个节点,依此类推。因此,从视觉上看,顺序从左下到右上,而在矩阵中,则从左上到右下。
码
library(RColorBrewer) #使用brewer.pal
library(fields) #使用designer.colors
#为每个六角形创建多边形的功能
#从一个矩阵开始,该矩阵将作为您的热图的数字表示形式,称为Heatmap_Matrix
x <- as.vector(map_Matrix)
#此矩阵具有与SOM映射相同的行数和与SOM映射相同的列数&#xff0c;并且热图中的每个值表示一个六边形的值
#在这里[1,1]将成为左下节点&#xff08;第一行&#xff0c;第一列&#xff09;&#xff0c;[1,2]将成为右节点[2,1]将成为第二行左侧的第一个节点
#因此&#xff0c;从视觉上看&#xff0c;可以从左下到右上工作
#SOM的行数和列数
Rows <- dim(map_Matrix)[1]
Columns <- dim(map_Matrix)[2]
#为图例腾出空间
par(mar &#61; c(0.2, 2, 2, 7))
#启动绘图窗口&#xff0c;但确实显示绘图上的所有轴或点
plot(0, 0, type &#61; "n", axes &#61; FALSE, xlim&#61;c(0, Columns),
ylim&#61;c(0, Rows), xlab&#61;"", ylab&#61; "", asp&#61;1)
#创建调色板
#我使用designer.colors在Brewer中允许的最大数量的数值之间插入50种颜色
ColRamp <- rev(designer.colors(n&#61;50, col&#61;brewer.pal(9, "Spectral") )
#制作一个向量&#xff0c;其长度&#xff08;ColRamp&#xff09;的bin数在x的最小值与最大值之间.
#接下来&#xff0c;将x中的每个点与ColorRamp中的一种颜色进行匹配
ColorCode <- rep("#FFFFFF", length(x)) #默认为全白
for (i in 1:length(x))
if (!is.na(x[i])) ColorCode[i] <- ColRamp[which.min(abs(Bins-x[i]))]
#在图上实际绘制六角形多边形
offset <- 0.5 #向上移动时六边形的偏移量
for (row in 1: Rows) {
for (column in 0:( Columns - 1))
agon(column &#43; offset, row - 1, col &#61; ColorCode[row &#43; Rows * column])
offset <- ifelse(offset, 0, 0.5)
}
#在右侧添加图例
image(legend.only&#61;TRUE, col&#61;ColRamp, zlim&#61;c(min(x, na.rm&#61;T), max(x, na.rm&#61;T)))
能够读取颜色含义的图例
在最后&#xff0c;创建图例&#xff0c;您将获得与上图类似的热图。
希望我的解释和代码能帮助您在R中创建自己漂亮的热图。
最受欢迎的见解
1.R语言动态图可视化&#xff1a;如何、创建具有精美动画的图
2.R语言生存分析可视化分析
3.Python数据可视化-seaborn Iris鸢尾花数据
4.r语言对布丰投针&#xff08;蒲丰投针&#xff09;实验进行模拟和动态
5.R语言生存分析数据分析可视化案例
6.r语言数据可视化分析案例&#xff1a;探索brfss数据数据分析
7.R语言动态可视化&#xff1a;制作历史全球平均温度的累积动态折线图动画gif视频图
8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
9.python主题LDA建模和t-SNE可视化