[英]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個問題:
我需要顯示數據矩陣中存在的單元格值。
我還需要在從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.