簡體   English   中英

在R中使用ggplot2進行熱圖

[英]Heatmap using ggplot2 in r

我的數據如下所示:

data1 <- read.table(text = "District    Block   IE       FE     AOE     CLE      CS
A             A1    4.87    17.54   13.85   9.01    45.27
                 B             B1    8.19    20.83   14.59   7.04    50.65
                 C             C1    8.71    19.16   16.54   8.24    52.65
                 D             D1    2.43    11.77   11.51   6.96    32.67
                 E             E1    6.85    13.54   14.54   5.7     40.63
                 F             F1    7.02    19.96   13.96   3.82    44.76
                 G             G1    2.55    11.64   8.74    5.06    27.99
                 H             H1    9.81    20.2    12.62   5.95    48.58
                 I             I1    6.56    15.49   12.32   8.08    42.45
                 J             J1    9.47    22.86   25      22.73   80.06
                 K             K1    10.2    20.18   20.14   20.06   70.58
                 L             L1    9.52    14.86   16.95   18.23   59.56", header = TRUE)

我已經從數據框中創建了數據矩陣,我的初始代碼如下所示

row.names(data1)<-data1$Column1

data1<-select(data1,-c(1))
data1<-data.matrix()
data1_heatmap<-heatmap(data1,Rowv = NA,Colv = NA,col=heat.colors(256),scale = "none",margins = c(12,3))

每當我使用上面的代碼時,它就會繪制整個工作表。

我有2個問題:

  1. 我需要顯示數據矩陣中存在的單元格值。

  2. 我還需要在從IE到CS的每一列中指定顏色范圍。例如,在IE列中,小於4.87的是紅色,從6.56到6.85的是橙色和綠色的,大於8.17。因此基本上是用戶定義的每一列的范圍。

嘗試使用ggplot2(從原始data1開始):

library(ggplot2)
library(reshape2)
row.names(data1)<-data1$Column1
data1<-select(data1,-c(1))
data1 <- melt(data1, id='Block')
data1$value <- cut(data1$value,breaks = c(-Inf,4.87, 6.56, 6.58, 8.17, 14, 19, 21, Inf),right = FALSE) # bin IE variable
ggplot(data =  data1, aes(x = Block, y = variable)) + 
  geom_tile(aes(fill = value), colour = "white") +
  scale_fill_brewer(palette = "PRGn")

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM