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_discrete
和coord_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,包括顏色 形狀 大小等 的乙個對映...