ggplot2畫簡單的heatmap

2022-08-26 10:42:15 字數 2186 閱讀 9770

gg_heatmap

perl

偶然的機會,發現ggplot2畫的heatmap也挺好看的,除了不能畫出聚類樹來(手動滑稽)。 隨意新建了兩個矩陣,並且計算對應的相關係數。

x <- matrix(sample(1:1000, 100), ncol = 10)

y <- matrix(sample(1:1000, 100), ncol = 10)

cor_score <- cor(t(x), t(y))

plot_df <- data.frame(

x = rep(1:10, 10),

y =rep(1:10, rep(10,10)),

value = as.vector(cor_score)

)

利用geom_tile()畫矩形,就大致完成了heatmap圖。

ggplot(data = plot_df, aes(x,y)) +

geom_tile(aes(fill = value)) +

scale_fill_continuous(low = "#00ff00", high = "#ff0000") +

scale_x_continuous(breaks = 1:10, labels = paste("sample", 1:10, sep = "_"))+

scale_y_continuous(breaks = 1:10, labels = paste("gene", 1:10, sep = "_"))+

theme_bw() +

theme(

axis.ticks = element_blank(),

panel.grid = element_blank(),

panel.border = element_blank(),

axis.title = element_blank(),

axis.text.x = element_text(angle = 90)

)

更進一步,發現可以利用極座標畫出圓形的heatmap,挺有意思的,主要還是計算文字旋轉的角度。

text <- paste("gene", 1:10, sep = "_")

one_cir_ang = 360/nrow(x)

right_text_ang <- -(seq(one_cir_ang/2, (180 - one_cir_ang/2), by = one_cir_ang))

right_text_ang[which(right_text_ang < -90)] <- 180 + right_text_ang[which(right_text_ang < -90)]

left_text_ang <- right_text_ang

text_ang = c(right_text_ang, left_text_ang)

然後就利用scale_y_discretecoord_polar(theta = "x")轉換為極座標

ggplot(data = plot_df, aes(x,y)) +

geom_tile(aes(fill = value)) +

geom_text(

aes(x = x, y = y,label = text, angle = text_ang),

data = data.frame(x = 1:10, y = 12, text, text_ang),

) +scale_fill_continuous(low = "#00ff00", high = "#ff0000") +

scale_y_discrete(breaks = 1:10, labels = paste("gene", 1:10, sep = "_"))+

coord_polar(theta = "x") +

theme_bw() +

theme(

axis.ticks = element_blank(),

panel.grid = element_blank(),

panel.border = element_blank(),

axis.title = element_blank(),

axis.text = element_blank()

)

ggplot2學習筆記(一)

該部分筆記整理於這裡 對比如下量 與繪圖結果 其區別在於前者在指定geom smooth中的aes加入了語句color cut。即在未指定分組要素時,預設按整體資料做平滑。question 想要改變圖表標題及x y軸標題如下 ggplot diamonds,aes x carat,y price,c...

ggplot2各類學習資源

繪圖菜譜 繪圖菜譜 winston chang winston stdout.org winston 是 rstudio 的軟體工程師,他是軟體包 shiny ggplot2 和 devtools 的開發者。他獲得西北大學的心理學專業博士學位,也是 o reilly media 出版的 r grap...

ggplot2入門基礎(一)

ggplot2 包通過 以圖層疊加的搭配組合,易於實現資料視覺化。ggplot2官方文件描述 一張統計圖形就是從資料到集合物件 geometric object,縮寫為geom,包括點 線 條形等 的圖形屬性 aesthetic attributes,縮寫為aes,包括顏色 形狀 大小等 的乙個對映...