諏圖——ggmatrix

2021-03-02 YuLabSMU

這個包的主要基於兩個原因:昨天朋友告訴我被翻牌子把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()。

往期精彩

相關焦點

  • GG入門學習第七課:新人五分鐘學會GG腳本編寫
    ()    //清除數據 為執行腳本裡第二個操作做準備 gg.searchNumber('1,036,831,949;1008981770;1110704128', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)gg.searchNumber('1008981770;', gg.TYPE_DWORD, false, gg.SIGN_EQUAL,
  • 理解transform中的matrix
    平移旋轉縮放transform的matrix 到這一步就得知六個值得起源以及修改哪些值可以實現相應的效果了,使用時套用公式即可。慄子 平移transform: matrix(1,0,0,1,50,50);
  • Leetcode題解 Set_Matrix_Zeroes
    matrix[0].size();        if(matrix[0][0] == 0)           //看一開始matrix[0][0]是否為0            flag = true;        for(int i = 0;i<row;i++)        {            for(int j = 0;j<col
  • 深剖矩陣-Matrix
    matrix是array的分支,很多時候二者是通用的 雖然看起來很相似,但是注意某些數學運算可能會有不同的結果 官方建議:儘量選擇array,因為array更靈活,速度更快矩陣和數組的區別 矩陣對象總是二維的。比如m.mean()的返回值是二維的,成員選擇的返回值也是二維的。
  • 機器學習基本功 | 從 Confusion Matrix 開始說起
    我們可以把結果畫這麼一個表:這個表就稱為 confusion matrix 。上面的 TP, FP, FN, TN 分別對應,From https://towardsdatascience.com/understanding-confusion-matrix-a9ad42dcfd62上面新冠病毒的例子中,
  • 秋季FLAG押題班第2課 - Matrix 專題
    ://leetcode.com/problems/maximum-subarrayhttps://leetcode.com/problems/range-sum-query-2d-immutablehttps://leetcode.com/problems/image-overlaphttps://leetcode.com/problems/spiral-matrix
  • 「css基礎」如何理解transform的matrix()用法
    ,matrix就是矩陣的意思,聽起來是不是很高級,你沒聽錯實現更高級的效果,你需要了解「矩陣」,聽到「矩陣」,是不是很驚慌,當初筆者學習線性代數時也甚是無聊,真不知道這門課有啥用,沒想到這門課在計算機領域應用十分廣泛,比如本文說的動畫效果,還有現在火爆的人工智慧,真是悔不當初,當時沒有好好學習這麼課程。
  • gg.gap包—截斷Y軸小能手
    gg.gap包 這個包已經發布在Cran上了,可以直接install.packages('gg.gap')進行安裝,這裡給出包的文檔地址[1]以供學習。這個包的Description中提到ggplot2圖中定義Y軸不是很容易,gg.gap()函數可以執行此操作,我們就來一探究竟。使用前我們先通過  ?gg.gap  了解一下該函數。簡單使用如下:
  • Leetcode題解 Longest Increasing Path in a Matrix
    ) {        int sz_x = matrix.size();        if(!        int sz_y = matrix[0].size();        int ans(0);        vector<vector<int>> len(sz_x, vector<int>(sz_y,0)); //Initialize Vector to record the maximum path from a point
  • 【Go語言繪圖】gg 庫的基本使用
    gg 庫的安裝和簡單使用 使用之前,我們當然得先來安裝一下這個庫:go get -u github.com/fogleman/gg這個庫的一個好處是有很多測試代碼,可以拿來跑跑看,就知道它大概能實現什麼樣的效果了
  • R語言基本功:vector,factor,list,matrix以及dataframe
    今天介紹R語言的幾個核心概念:vector,factor,list, matrix與dataframe。R語言中的vector主要包含三種類型,如數值型,字符型,邏輯型。非常類似,不同點在於matrix是二維的。
  • 單字符域名u.gg在西部數碼近10萬元成交!
    西部數碼(west.cn)4月23日消息,.gg後綴僅兩個字符,簡短易記,品相不俗,不少用戶對其青睞有加,而其中精品短字符域名在市場上更是香餑餑,往往能拍出不錯價格。近日,極品單字母域名u.gg在西部數碼通過push完成交易,成交價為95000元。
  • 井然有序 52gg《烈火戰神》打造美好城市
    52gg《烈火戰神》就讓你看看井然有序的城市,就讓我們一起共同打造美好城市!烈火戰神玩家交流群:472097222  52gg《烈火戰神》行會可遠徵的城市有銀杏山莊、王城、土城、伏魔谷四個城市,遠徵這幾個城市只可以由行會首領和副首領進行申請,申請成功後,行會成員便可進入行會申請城市開始戰鬥,只要擊敗其他競爭行會與佔據水晶後
  • 團結就是力量 52gg《英雄降臨》傳說中的王國
    但是有一天魔族來犯,52gg《英雄降臨》的他們只能團結起來一起抵抗魔族,把他們趕出去。團結就是力量,為了自己的家園拼了!英雄降臨玩家交流群:49286570252gg《英雄降臨》人民因為長時間沒有經歷戰爭,所以根本不是怪物的對手,只有退回城鎮。 只有在這裡才是安全的,魔鬼的怪物是不敢進入城鎮的。 為了保衛家園,全體人民團結在了一起,人們開始鍛鍊自己。 52gg《英雄降臨》王國開始訓練自己的軍隊,無數的勇士誕生了,英勇的反擊戰開始了。 人們為了保衛自己的家園而團結在了一起。強大的敵人節節深入。
  • Facebook 推出遊戲直播服務 Fb.gg,對標 Twitch
    今日,Facebook 發布公告稱在其主網站上新增了遊戲直播服務,名為 Fb.gg。Fb.gg 是一個集特色創作者、電子競技比賽和遊戲會議活動於一身的流媒體視頻平臺。公告中稱 Fb.gg 將幫助用戶不斷更新遊戲和競技賽事的直播,而不會收到新聞時間線的影響。Facebook 稱基於 Fb.gg 的個性化推薦可以幫助其與 YouTube 和 Twitch 這樣的視頻網站競爭,如果視頻主播認為可以在 Facebook 上獲取大量的觀眾,那麼他們就可以直接選擇在 Facebook 上進行直播。
  • 默契的考驗 52gg《霸者之刃2》登上最高峰
    答案當然就是珠穆朗瑪峰,人活著一生就要挑戰一下自己攀登一下最高峰,儘管你現在還沒有實力去攀登珠穆朗瑪峰,不過沒有關係,你可以來到52gg《霸者之刃2》中加入行會,來一場默契的考驗,助你登上最高的山峰,看到最美的風景!霸者之刃2玩家交流群:303463648
  • 微軟收購電競服務平臺 Smash.gg 未來保持獨立運作
    微軟收購電競服務平臺 Smash.gg 未來保持獨立運作微軟過去也曾在2017年收購的直播遊戲社群服務Beam,並且在後續更名為Mixer,期望藉此與Twitch等同性質服務競爭,甚至後續也與微軟旗下服務合併,但最終仍因難以與Twitch在線社群抗衡
  • 強中自有強中手 52gg《天局》強化小意思
    在52gg《天局》中同樣也是這樣,強化裝備什麼的都是小意思,但是你也不能忽視哦,會有很大的威力哦!天局玩家交流群:19599473852gg《天局》熔煉系統包括裝備強化、裝備精工、裝備打磨等系統。熔煉系統對於人物裝備的強化,人物屬性的提升有著不可替代的作用。那麼熔煉系統具體應該怎麼操作呢?今天我就來帶大家來了解一下熔煉系統。
  • Facebook遊戲中心Fb.gg現已推出Android公測版本
    今年夏天,Facebook 推出了與 Twitch 競爭的線上遊戲平臺 Fb.gg,旨在吸引遊戲迷和他們的粉絲在 Facebook 平臺上觀看流媒體視頻。該 App 可以根據用戶關注的遊戲、主播、群組、以及其他人也在觀看等信息而提供推薦。