使用geom_tile绘制热力图时添加频率标签的问题求助
解决geom_tile热力图添加频率标签的问题
方法一:直接使用table转换后的数据框
你之前的geom_text未生效,大概率是ggplot语法衔接的问题。把映射参数统一放在ggplot()中,就能让geom_text正确继承频数列的数值:
# 将原始数据转换为频数统计数据框 freq_df <- table(df) %>% as.data.frame() # 绘制带标签的热力图 ggplot(freq_df, aes(x = Var1, y = Var2, fill = Freq)) + geom_tile(color = "black") + geom_text(aes(label = Freq), color = "black", size = 3) + coord_fixed()
方法二:用dplyr聚合数据后绘图
你用dplyr聚合得到的df2是正确的,但绘图时要注意映射的列名是你自定义的total_count,而非默认的Freq,代码如下:
# 正确聚合数据 df2 <- df %>% group_by(Var1, Var2) %>% summarise(total_count = n(), .groups = 'drop') # 绘制带标签的热力图 ggplot(df2, aes(x = Var1, y = Var2, fill = total_count)) + geom_tile(color = "black") + geom_text(aes(label = total_count), color = "black", size = 3) + coord_fixed()
关键注意点
- 两种方法的核心是确保
geom_text的label参数映射到正确的频数列(第一种是Freq,第二种是total_count) - 把映射参数放在
ggplot()中,能让所有图层共享同一套数据映射,避免图层间的映射不匹配问题
内容的提问来源于stack exchange,提问作者JB543
相关产品推荐
相关产品推荐

