R语言160×3矩阵转ggplot热图可用数据及x()报错解决
解决方案
报错原因
你代码中使用的x()是R的函数调用语法,当前环境中不存在名为x的函数因此触发报错,你需要提取矩阵的列数据,不需要在变量名后加括号。
数据处理与绘图步骤
你现有的160×3矩阵(三列分别对应x、y、z值)本身就满足geom_tile的输入要求,不需要额外做循环生成bin,仅需做简单的格式转换即可:
- 第一步:加载依赖包,仅需
ggplot2即可实现需求
library(ggplot2)
- 第二步:将矩阵转换为ggplot可识别的数据框格式,并匹配你写的aes参数名称
# 请将代码中的mat替换为你自己的160×3矩阵变量名 df <- as.data.frame(mat) colnames(df) <- c("X", "y", "Z")
- 第三步:执行绘图命令,注意补充
geom_tile图层才能绘制瓦片热图
ggplot(df, aes(X, y, fill = Z)) + geom_tile()
额外场景说明
如果你后续拿到的是160×160的宽格式z值矩阵(行对应y坐标、列对应x坐标、单元格值为z),可使用如下代码转成符合要求的长表:
library(tidyr) # 请将wide_mat替换为你自己的宽格式矩阵变量名 df <- as.data.frame(wide_mat) %>% # 生成y坐标值 mutate(y = 1:nrow(.)) %>% # 宽转长 pivot_longer(cols = -y, names_to = "X", values_to = "Z") # 将默认生成的X列字符转为数字坐标 df$X <- as.integer(sub("V", "", df$X))
内容的提问来源于stack exchange,提问作者NINA GILSHTEYN
相关产品推荐
相关产品推荐

