R 热图绘制如何以图形方式对变量进行聚类

R 热图绘制如何以图形方式对变量进行聚类,r,ggplot2,heatmap,R,Ggplot2,Heatmap,我有一个案例形式的分类变量数据框架,由三个变量(即颜色、形状和大小)组成。数据帧的一个示例如下: Color Shape Size Freq 1 Yellow Square Big 10 2 Yellow Square Medium 6 3 Yellow Square Small 3 4 Yellow Triangle Big 4 5 Yellow Triangle Medium 6 6 Yellow Triangle

我有一个案例形式的分类变量数据框架,由三个变量(即颜色、形状和大小)组成。数据帧的一个示例如下:

Color    Shape     Size   Freq
1 Yellow  Square    Big    10
2 Yellow  Square    Medium  6
3 Yellow  Square    Small   3
4 Yellow  Triangle  Big     4
5 Yellow  Triangle  Medium  6
6 Yellow  Triangle  Small   8
7 Red     Square    Big     2
8 Red     Square    Medium  6
9 Red     Square    Small   5
10Red     Triangle  Big    12
.......
我已使用以下代码创建了热图:

library(dplyr)
library(ggplot2)

df_max <- df %>%
  group_by(Color, Shape) %>%
  slice(which.max(Freq))

head(df_max)
# Source: local data frame [4 x 4]
# Groups: Color, Shape [4]
# 
#    Color    Shape   Size  Freq
#    (chr)    (chr)  (chr) (int)
# 1    Red   Square Medium     6
# 2    Red Triangle    Big    12
# 3 Yellow   Square    Big    10
# 4 Yellow Triangle  Small     8

ggplot(df_max, aes(x = Color, y = Shape, fill = Size)) +
  geom_tile()
库(dplyr)
图书馆(GG2)
df_最大值%
分组依据(颜色、形状)%>%
切片(哪个.max(频率))
水头(df_最大值)
#来源:本地数据帧[4 x 4]
#组:颜色、形状[4]
# 
#颜色形状大小频率
#(chr)(chr)(chr)(内部)
#1红场中6号
#2红色三角形大12
#3黄色方形大10
#4黄色三角形小8
ggplot(df_max,aes(x=颜色,y=形状,填充=大小))+
geom_瓷砖()
因此:


然而,热图不够清晰,为了清晰起见,我需要尽可能多地将颜色分组。例如,红色(大小)分组比其他颜色更接近。我尝试在切片之前按大小排列数据帧,但没有令人满意的结果,因此有人能提供关于如何排列变量以获得最终结果的任何想法吗?

我无法提供使用ggplot2的任何建议,但您可以检查(如果向下拖动,请查看第九个热图)这演示了如何对字符矩阵进行聚类。@Zuguang Gu感谢您的提示。我已经浏览了您的文档,该包似乎可以很好地处理数字或字符矩阵,但是像上面这样的列联表怎么样?我不知道如何使用CompleteHeatmap,如果我需要将数据帧转换为矩阵,输入是矩阵,但您可以使用Reformae2软件包中的
acast
将数据帧转换为矩阵。我无法提供使用ggplot2的任何建议,但您可以检查(如果向下拖动,请查看第9个热图)这演示了如何对字符矩阵进行聚类。@Zuguang Gu感谢您的提示。我已经浏览了您的文档,该包似乎可以很好地处理数字或字符矩阵,但是像上面这样的列联表怎么样?我不知道如何使用CompleHeatmap,如果我需要将数据帧转换为矩阵,则输入是矩阵,但您可以使用Reformae2软件包中的
acast
将数据帧转换为矩阵。