You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R绘制与示例图完全一致的对角热图?

R绘制指定对角上三角热图实现方案

以下是基于你的数据,绘制与目标图一致的热图的完整代码及步骤:

原始数据

df <- data.frame(
  x1 = c("A","A","A","A","A","B","B","B","B","C","C","C","D","D","E"),
  x2 = c("B","C","D","E","F","C","D","E","F","D","E","F","E","F","F"),
  relation = c(76.90,75.26,74.82,74.61,71.78,75.49,75.56,75.41,72.16,74.68,74.28,71.71,
               73.87,72.34,72.14)
)

实现代码

# 加载所需工具包
library(tidyverse)

# 获取所有类别并固定顺序
categories <- unique(c(df$x1, df$x2))
categories <- factor(categories, levels = categories)

# 生成完整配对网格,关联数据后筛选上三角区域
plot_data <- expand_grid(x1 = categories, x2 = categories) %>%
  left_join(df, by = c("x1", "x2")) %>%
  filter(as.integer(x1) < as.integer(x2))

# 绘制热图
ggplot(plot_data, aes(x = x1, y = x2)) +
  # 绘制带边框的热图单元格
  geom_tile(aes(fill = relation), color = "white") +
  # 添加单元格数值标签
  geom_text(aes(label = ifelse(!is.na(relation), sprintf("%.2f", relation), "")), color = "black") +
  # 设置颜色渐变(匹配目标图的蓝红逻辑:高值偏红、低值偏蓝)
  scale_fill_gradient(low = "#4477AA", high = "#EE6677", na.value = "white") +
  # 反转Y轴顺序,对齐目标图布局
  scale_y_discrete(limits = rev(categories)) +
  # 优化主题样式
  theme_minimal() +
  theme(
    panel.grid = element_blank(),
    axis.title = element_blank(),
    legend.title = element_text(text = "相似度"),
    legend.position = "right"
  )

代码说明

  • 数据预处理:通过expand_grid生成所有类别配对,关联原始数据后筛选出x1顺序在x2之前的上三角区域,对应目标图的显示范围。
  • 热图绘制:geom_tile绘制颜色单元格,geom_text添加数值标签,颜色渐变参数匹配目标图的色彩逻辑。
  • 布局调整:反转Y轴顺序,去除多余网格线,让最终图与目标图结构完全一致。

内容的提问来源于stack exchange,提问作者Umar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 08:40:29