2401_87344217 2024-09-28 10:29 采纳率: 0%
浏览 3

用R包heatmap跑数据卡住了怎么办?

如题,在NC上下了一个数据准备用heatmap()复现一下,用AI提供的代码就很好画出来简单的,结果用自己的数据画就出现一直卡住的情况,排除了一晚上应该不是一些参数方面的问题,比如show_rowname=TRUE的情况,因为调了没有影响,初步发现问题出现在矩阵行列的那一块,代码让AI改一直出错,导致后来的矩阵一直把我的基因名称给吃了,求各位指点
代码是:

# 加载所需的包
if (!requireNamespace("pheatmap", quietly = TRUE)) {
  install.packages("pheatmap")
}
if (!requireNamespace("readxl", quietly = TRUE)) {
  install.packages("readxl")
}

library(pheatmap)
library(readxl)

# 选择文件路径
file_path <- file.choose()  # 这将打开一个文件选择对话框

# 读取 Excel 数据
data <- read_excel(file_path, sheet = 1)  # 读取第一个工作表

# 将数据框转换为矩阵,并设置行名
data_matrix <- as.matrix(data[, -1])  # 去掉第一列(基因名称)
rownames(data_matrix) <- data[[1]]     # 将第一列设置为行名

# 确保数据为数值类型
data_matrix <- apply(data_matrix, 2, as.numeric)

# 检查缺失值
if (any(is.na(data_matrix))) {
  data_matrix[is.na(data_matrix)] <- 0  # 用 0 填充 NA
}

# 设置图形设备
png("heatmap.png", width = 500, height = 300)  # 调整整体图形的宽度和高度

# 自定义调色
custom_colors <- colorRampPalette(c("#5caad7", "white", "#bb1e38"))(256)  # 自定义调色

# 绘制热图
pheatmap(data_matrix, 
         color = custom_colors,          # 使用自定义调色
         cluster_rows = TRUE,            # 启用行聚类
         cluster_cols = FALSE,           # 不启用列聚类
         main = "聚类热图示例", 
         display_numbers = FALSE,        # 显示数值
         cellwidth = 10,                 # 单元格宽度
         cellheight = 20,                # 单元格高度
         legend = TRUE,                  # 显示图例
         fontsize_row = 12,              # 行标签字体大小
         fontsize_col = 10,            # 列标签字体大小
         show_rownames = TRUE)


跑出来的图片如下

img

AI随机生成的数据的代码跑出来如下

img


NC上下载的数据是这样的(没截完,剩余的形式上没什么大区别):

img


前面data的结构是这样的,看着蛮正常:

img


但是后面data_matrix里的就把基因那一列给我吃了:

img


调了一晚上也没调出来,所以请各位们帮我看看该怎么搞,谢谢!

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-28 10:30
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    你的问题看起来像是在处理数据转换和图形绘制时出现的。从给出的代码和错误信息来看,可能存在以下几个问题:

    1. 数据读取问题

      • 确保你的Excel文件中的数据格式正确,没有错误的格式或缺失的数据。
      • 检查文件路径是否正确,文件是否确实存在于你指定的路径中。
      • 如果文件中有空行或者空列,这可能会导致数据转换出错。
    2. 数据转换问题

      • 在转换数据框为矩阵时,使用data[, -1]可能会遗漏掉第一列的数据。请检查你的数据是否包含列名,并考虑是否需要将列名作为行名。
      • 在将数据框转换为矩阵时,需要确保所有数据都可以转换为数值类型。如果数据中有非数值类型的数据,这可能会导致问题。
    3. 图形绘制问题

      • 确保你的数据矩阵data_matrix是一个数值矩阵,没有缺失值或NA。
      • 在使用pheatmap函数时,确保所有的参数都是正确的,特别是与颜色、行和列的聚类相关的参数。

    根据以上分析,你可以按照以下步骤尝试解决问题:

    1. 检查数据

      • 打开你的Excel文件,检查数据格式和完整性。
      • 确保所有的数据都可以转换为数值类型。
    2. 修改代码

      • 更改数据读取和转换部分的代码,确保所有数据都被正确读取和转换为数值类型。
      • 如果需要,可以将列名作为行名,并在转换数据框为矩阵时保留第一列。
    3. 绘制图形

      • 在调用pheatmap函数之前,确保数据矩阵没有缺失值或NA。
      • 尝试调整pheatmap函数的参数,确保它们与你的数据和需求相匹配。

    最后,如果问题仍然存在,建议将具体的错误信息或错误消息提供出来,以便更准确地定位问题所在。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月28日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见