r - 如何最好地在热图中同时呈现三个变量?
问题描述
给定一个矩阵,如:
m <- matrix(ncol = 4, nrow = 3)
colnames(m) <-c("attribute1-1","attribute1-2","attrbute1-3","attribute2")
rownames(m) <-c("sample1","sample2","sample3")
m[1,] <- c(5,7,0,2)
m[2,] <- c(0,0,0,6)
m[3,] <- c(0,0,4,1)
我想制作一个热图,其中属性 1-1 : 1-3 用于指示存在/不存在(单个条目是否为空白,取决于是否存在正值或 0)和属性 2 用于表示强度。换句话说:如果根据属性 1 列,在属性 1 的该实例中存在该行(例如,属性 1-2 对行 1 的正值),则强度由属性 2 规定。
我认为存在/不存在可以使用诸如“decostand”之类的公式来完成: X.pa <- decostand(X,method="pa")
并且可以从多个包创建热图,特别是“Superheat”。
不过,我似乎无法正常工作。任何关于继续多少的建议将不胜感激。先感谢您。
解决方案
感谢您添加示例数据。解决方案使用ggplot2
:
m <- matrix(ncol = 4, nrow = 3)
colnames(m) <-c("attribute1-1","attribute1-2","attrbute1-3","attribute2")
rownames(m) <-c("sample1","sample2","sample3")
m[1,] <- c(5,7,0,2)
m[2,] <- c(0,0,0,6)
m[3,] <- c(0,0,4,1)
m
#> attribute1-1 attribute1-2 attrbute1-3 attribute2
#> sample1 5 7 0 2
#> sample2 0 0 0 6
#> sample3 0 0 4 1
# library
library(tidyverse)
# adjust data
dat <- m %>%
as_tibble(rownames="sample") %>%
gather(name,value, -c(sample,attribute2)) %>%
mutate(attribute2=case_when(value==0 ~ 0, TRUE ~attribute2))
#make plot
ggplot(dat,aes(name,sample)) +
geom_tile(aes(fill = attribute2), colour = "white") +
scale_fill_gradient(low = "white", high = "steelblue")
由reprex 包(v0.3.0)于 2020-04-04 创建
推荐阅读
- amazon-web-services - AWS 通配符证书的子域问题
- ruby-on-rails - 为设计中的额外字段添加自定义错误消息
- c# - 为什么在单个页面中使用多个 foreach 循环导致第一个 foreach 与 c# 重复?
- swift4 - 如何将 ARReferenceImage 放入 Core Data?
- angular - 防止选中单选按钮但无法从 ionSelect ion-radio 获取 RadioButton 组件对象
- angular - 异步测试执行问题
- python - 使用多个输入喂养 keras 模型
- c - 为什么每次我再次编译程序时都需要在文件中添加相同的元素
- c - 在 Grub 2.02 源代码中查找倒数计时器
- ios - 使用弱自我避免在闭包中保留循环