• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

R 繪製樹狀圖 dendextend 套件使用教學與範例

介紹如何使用 dendextend 這個 R 套件,繪製各種複雜的樹狀圖。


dendextend 是一個專門用於繪製各種樹狀圖的 R 套件,其使用的樹狀圖格式為 dendrogram,可以對樹狀圖做各種非常細微的調整,功能非常豐富。

安裝 dendextend 套件

若要安裝 dendextend 套件,可以直接從 R 官方的 CRAN 套件庫安裝:

# 安裝 dendextend 套件
install.packages('dendextend')

亦可從 GitHub 上面下載最新的版本來安裝:

# 從 GitHub 安裝
library("devtools")
devtools::install_github('talgalili/dendextend')

安裝完成後,載入 dendextend 套件即可開始使用:

# 載入 dendextend 套件
library(dendextend)

dendextend 套件中處理 dendrogram 物件的函數是以 R 語言實作的,所以若遇到較大量的資料時,處理速度會比較慢,遇到這樣的狀況可以考慮改用 dendextendRcpp 套件,它是以 Rcpp(C 語言)的方式所實作的套件,功能相同但是處理速度比較快:

# 安裝 dendextendRcpp 套件
install.packages("Rcpp")
devtools::install_github('talgalili/dendextendRcpp')

載入 dendextendRcpp 套件之後,就可以運用一些 dendextendRcpp_ 開頭的對應函數,加速某些特定的操作:

# 載入 dendextendRcpp 套件
library(dendextendRcpp)

建議可以同時安裝 colorspace 套件,方便產生各種色盤:

# 安裝 colorspace 套件
install.packages("colorspace")

產生樹狀圖

這裡我們手動建立一個示範用的 dendrogram 樹狀圖:

# 載入 magrittr 套件
library(magrittr)

# 產生一個 dendrogram 樹狀圖
dend <- 1:5 %>% dist %>% hclust %>% as.dendrogram

將 dendrogram 樹狀圖用 plot 函數畫出來:

# 畫出樹狀圖
dend %>% plot
樹狀圖

我們可以透過一些函數取得樹狀圖的屬性:

# 樹狀圖節點的文字標示
dend %>% labels

# 樹狀圖的 leaves 節點數
dend %>% nleaves

# 樹狀圖的總節點數(包含 leaves)
dend %>% nnodes

節點屬性

當我們想要取得樹狀圖中各個節的屬性時,通常都會使用深度優先搜尋(depth-first search)的方式來走訪每個節點。

深度優先搜尋

以 get_nodes_attr 取得各個節點的屬性時,就會按照這個順序輸出:

# 取得各節點的高度
dend %>% get_nodes_attr("height")
[1] 4 1 0 0 2 0 1 0 0
# 取得各節點的子節點(leaves)數量
dend %>% get_nodes_attr("members")
[1] 5 2 1 1 3 1 2 1 1
# 判斷是否為 leaves 節點
dend %>% get_nodes_attr("leaf")
[1]   NA   NA TRUE TRUE   NA TRUE   NA TRUE TRUE
# 取得各節點的名稱
dend %>% get_nodes_attr("label")
[1] NA NA  1  2 NA  5 NA  3  4

編輯樹狀圖

若要編輯樹狀圖的各種屬性,最常用的方式就是透過 set 函數來設定,它的語法為:

set(樹狀圖物件, 屬性, 值)

其中 屬性 參數可以接受非常多種選項,舉凡文字、節點、枝幹等屬性都可用這樣的方式來設定。

節點文字

若要修改節點的文字標示內容,可以執行:

# 更改節點的文字標示
dend %>% set("labels", c(31:35)) %>% plot
更改節點的文字標示

通常在設定節點的文字標示時,會將變數類型轉為字元,避免未來在處理時出現其他的問題:

# 將節點文字標示類型轉為字元
dend %>% set("labels_to_char") %>% labels
[1] "1" "2" "5" "3" "4"

若要改變文字的顏色,可以執行:

# 將文字顏色改為紅色
dend %>% set("labels_col", "red") %>% plot
改變文字顏色

若要改變文字的大小,可以執行:

# 將文字大小改為 2
dend %>% set("labels_cex", 2) %>% plot
改變文字大小

也可以個別定每個文字的內容、顏色與大小:

# 個別指定每個文字的屬性
dend %>% set("labels", c(31:35)) %>%
  set("labels_cex", c(1, 1, 2, 2, 3)) %>%
  set("labels_col", c(3, 3, 4, 4, 2)) %>%
  plot
個別指定每個文字的屬性

在標示樹狀圖文字的顏色時,還可以配合 k 參數來指定要將整棵樹切成幾群,透過這種方式指定每一群的文字顏色:

# 分群上色
dend %>% set("labels_col", c(3, 4), k = 2) %>% plot
分群上色
頁次: 頁次 1 頁次 2

分類:R 標籤:Visualization

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide