【问题标题】:How to create a 8x12 heatplot from a single column of values?如何从单列值创建 8x12 热图?
【发布时间】:2017-11-10 10:42:34
【问题描述】:

我在 R 中有一列值,表示来自 8x12 网格的测量值:

这是前四行测量值。 A1-H1 代表网格中的第 1 行,A2-H2 代表第 2 行等。我总共有 12 行。如何将此数据转换为 8x12 的矩阵(在此虚拟示例中为 8X4),以便我可以创建一个热图,以重现数据时丢失的网格的原始形状的方式可视化相对权重值作为单列导入?

提前谢谢你。

Cell    Weight
A1  2
B1  2
C1  2
D1  2
E1  2
F1  2
G1  2
H1  2
A2  2
B2  0.1
C2  2
D2  4
E2  2
F2  0.1
G2  2
H2  2
A3  2
B3  2
C3  2
D3  2
E3  2
F3  4
G3  2
H3  2
A4  2
B4  2
C4  6
D4  2
E4  2
F4  2
G4  2
H4  2

【问题讨论】:

    标签: r matrix heatmap


    【解决方案1】:

    我认为您不需要矩阵,只需从表中提取行/列信息并将其用于geom_tile

    df$Row <- gsub("[A-Z]", "", df$Cell)
    df$Col <- gsub("[0-9]", "", df$Cell)
    library(ggplot2)
    ggplot(df, aes(Col, Row, fill = Weight)) +
        geom_tile()
    

    【讨论】:

      【解决方案2】:

      使用库tidyrdplyr

      df <- read.table(header=TRUE, as.is=TRUE, text='Cell    Weight
      A1  2
      B1  2
      C1  2
      D1  2
      E1  2
      F1  2
      G1  2
      H1  2
      A2  2
      B2  0.1
      C2  2
      D2  4
      E2  2
      F2  0.1
      G2  2
      H2  2
      A3  2
      B3  2
      C3  2
      D3  2
      E3  2
      F3  4
      G3  2
      H3  2
      A4  2
      B4  2
      C4  6
      D4  2
      E4  2
      F4  2
      G4  2
      H4  2')
      m <- df %>% separate(Cell, into=c('column','rows'), sep=1) %>% spread(column, Weight) 
      rownames(m) <- m$rows
      m$rows <- NULL
      heatmap(as.matrix(m))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        • 2019-09-05
        • 2014-01-14
        • 2020-07-13
        • 2021-02-24
        • 2021-11-20
        • 2012-10-16
        相关资源
        最近更新 更多