原文链接:http://tecdat.cn/?p=18879
这是一个六边形热图可视化程序,主要用到的知识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映射相同的列数,并且热图中的每个值表示一个六边形的值
-
-
-
#在这里[1,1]将成为左下节点(第一行,第一列),[1,2]将成为右节点[2,1]将成为第二行左侧的第一个节点
-
-
-
#因此,从视觉上看,可以从左下到右上工作
-
-
-
-
#SOM的行数和列数
-
-
-
Rows
<-
dim(map_Matrix)[1]
-
Columns
<-
dim(map_Matrix)[2]
-
-
#为图例腾出空间
-
-
-
par(mar
=
c(0.2,
2
,
2
,
7
))
-
-
#启动绘图窗口,但确实显示绘图上的所有轴或点
-
-
-
plot(0,
0
,
type
=
"n"
,
axes
=
FALSE
,
xlim=c(0,
Columns),
-
ylim=c(0,
Rows),
xlab="",
ylab=
""
,
asp=1)
-
-
#创建调色板
-
-
-
#我使用designer.colors在Brewer中允许的最大数量的数值之间插入50种颜色
-
-
-
-
ColRamp
<-
rev(designer.colors(n=50,
col=brewer.pal(9,
"Spectral"
)
)
-
-
#制作一个向量,其长度(ColRamp)的bin数在x的最小值与最大值之间.
-
#接下来,将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
+
offset,
row
-
1,
col
=
ColorCode[
row
+
Rows
*
column]
)
-
offset
<-
ifelse(offset,
0,
0.5
)
-
}
-
-
#在右侧添加图例
-
-
image(legend.only=TRUE,
col=ColRamp,
zlim=c(min(x,
na.rm=T),
max(x,
na.rm=T)))
能够读取颜色含义的图例
在最后,创建图例,您将获得与上图类似的热图。
希望我的解释和代码能帮助您在R中创建自己漂亮的热图。
最受欢迎的见解
3.Python数据可视化-seaborn Iris鸢尾花数据
7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告
转载:https://blog.csdn.net/qq_19600291/article/details/105901111
查看评论