這個包的主要基於兩個原因:昨天朋友告訴我被翻牌子把rectriangle整合進ggcor,我考慮了之後覺得放在ggcor不是很合適,就新開了一個包。
安裝# install.packages("devtools")
devtools::install_github("houyunhuang/ggmatrix")
案例ggmatrix的緣起就是上下不一樣的三角形熱圖,所以介紹也從這個熱圖開始。故事開始之前先造個數據(後面會講到,這樣造數據完全可以避免,因為有matrixs_to_df()函數)。
library(ggmatrix) ## 0.1.2版本
library(RColorBrewer)
df <- data.frame(x = rep(1:11, 14),
y = rep(1:14, each = 11),
group = sample(LETTERS[1:5], 154, replace = TRUE),
values1 = rnorm(154, mean = 10, sd = 5),
values2 = rnorm(154, mean = -10, sd = 2),
stringsAsFactors = FALSE)
geom_triangle()函數ggmatrix提供了處理上下不一樣的三角形熱圖的圖層函數geom_triangle(),該函數與一般的geom_polygon()函數的區別是多了兩個填充顏色映射屬性fill.upper和fill.lower,可以單獨指定上下三角形的顏色映射。當然,為了符合一般geom_polygon()函數的使用習慣,我保留了fill參數,當設置fill時表示上下三角是同一的。
默認填充色(fill)為空,只畫出上下三角形。
ggplot(df, aes(x = x, y = y)) + geom_triangle()當設置fill參數時,表明把上下三角形當成一個整體來處理,映射顏色也完全相同。
ggplot(df, aes(x = x, y = y)) + geom_triangle(fill = "lightblue")ggplot(df, aes(x = x, y = y)) + geom_triangle(aes(fill = values1))既然要畫上下三角不一樣的熱圖,關鍵的當然就是怎麼做到不一樣。我們可以單獨設置上下三角形的填充顏色。
## 設置上三角顏色為淺藍色
ggplot(df, aes(x = x, y = y)) + geom_triangle(fill.upper = "lightblue")## 設置上三角顏色為淺藍色,且設置下三角顏色為橙色
ggplot(df, aes(x = x, y = y)) +
geom_triangle(fill.upper = "lightblue", fill.lower = "orange")全都手動設置也太過於笨拙了吧,我們看看怎麼處理上下三角的顏色映射。geom_triangle()可以單獨設置上三角或者下三角映射,注意當把上下三角填充顏色映射給其它變量時,一定要同時加上對應的scale函數,我還不懂怎麼添加默認映射。
ggplot(df, aes(x = x, y = y, fill.upper = values1)) +
geom_triangle() +
scale_fill_upper_gradientn(colours = c("red", "white", "blue"))同時映射上下三角,是不是感覺不用ggnewscale或者relayer包的黑科技了,會爽很多。
ggplot(df, aes(x = x, y = y, fill.upper = values1, fill.lower = values2)) +
geom_triangle(mode = "lb-rt") +
scale_fill_upper_gradientn(colours = brewer.pal(5, "Greys")) +
scale_fill_lower_gradientn(colours = brewer.pal(5, "YlGnBu"))也可以映射離散變量。
ggplot(df, aes(x = x, y = y, fill.upper = group, fill.lower = values2)) +
geom_triangle() +
scale_fill_upper_manual(values = brewer.pal(5, "Set1")) +
scale_fill_lower_gradientn(colours = c("#E9A3C9", "#F7F7F7", "#A1D76A"),
guide = guide_legend())ggmatrix提供了五種顏色映射函數,每個函數的用法均和對應的原ggplot2中的函數相同。
scale_fill_lower/upper_gradient()——ggplot2中scale_fill_gradient()。scale_fill_lower/upper_gradient2()——ggplot2中scale_fill_gradient2()。scale_fill_lower/upper_gradientn()——ggplot2中scale_fill_gradientn()。scale_fill_lower/upper_identity()——ggplot2中scale_fill_identity()。scale_fill_lower/upper_manual()——ggplot2中scale_fill_manual()。往期精彩