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

如何在R中透视DataFrame以绘制药物为列、Score为行的热力图?

绘制指定结构的热力图

首先需要调整数据结构,将Score作为热力图的行标签,药物变量作为列,对应的0/1值作为热力图的填充数据。可以按以下步骤实现:

1. 数据预处理

先把Score列设置为数据框的行名,然后提取所有药物列转换成矩阵(热力图函数通常需要矩阵格式输入):

# 设置行名为Score
rownames(df) <- df$Score
# 提取药物列并转为矩阵
drug_matrix <- as.matrix(df[, grep("Drug", colnames(df))])
# 按Score排序(可选,让行按Score从小到大排列)
drug_matrix <- drug_matrix[order(as.numeric(rownames(drug_matrix))), ]

2. 绘制热力图

使用R基础包的heatmap()函数绘制,调整参数让药物作为列、Score作为行,样式匹配需求:

heatmap(drug_matrix, 
        Rowv = NA, Colv = NA,  # 不进行聚类排序
        scale = "none",        # 不缩放数据
        col = c("#ffffff", "#2c3e50"),  # 0用白色,1用深色,可自定义
        labRow = rownames(drug_matrix), # 显示Score作为行标签
        labCol = colnames(drug_matrix), # 显示药物作为列标签
        main = "药物-得分热力图",
        xlab = "药物",
        ylab = "得分")

关键参数说明

  • Rowv = NA和Colv = NA:关闭行和列的聚类排序,保持原始的药物列顺序和排序后的Score行顺序
  • col:自定义颜色映射,这里用白色代表0(未使用药物),深色代表1(使用药物),可根据需求替换颜色代码
  • labRow/labCol:确保行和列显示对应的Score和药物名称

如果需要更美观的样式,也可以使用pheatmap包,代码如下:

# 先安装并加载包
# install.packages("pheatmap")
library(pheatmap)

pheatmap(drug_matrix,
         cluster_rows = FALSE,
         cluster_cols = FALSE,
         color = c("#ffffff", "#2c3e50"),
         main = "药物-得分热力图",
         labels_row = rownames(drug_matrix),
         labels_col = colnames(drug_matrix))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:10:16