首先,加载recharts:

library(recharts)

1 介绍Introduction

矩形树图包括一种类型:treemap

关键是:

  • 文本型x,至少两列:x[,1]为树图结点,x[,2]为节点的父节点。根节点的父节点为NA。
  • 数值型y
  • facet用于生成多个矩形树图

2 用法Function Call

echartr(data, x, <y>, <series>, <facet>, <t>, <type>, <subtype>)
变量 要求

data

数据框格式的源数据

x

文本型自变量。如提供多个变量,只传入前两个: 第一列为节点,第二列为其父节点。

y

数值型应变量。如提供多个变量,只传入第一个。

series

转为因子后计算。series的每个水平被处理为分组因子。如提供多个变量,只传入第一个。

facet

转为因子后计算。facet的每个水平被处理为分组因子,用于产生独立的极坐标系。如提供多个变量,只传入第一个。

t

时间轴变量,转为因子后计算。如提供多个变量,只传入第一个。

type

‘treemap’.

3 举例Showcase

3.1 数据准备Data Preparation

准备一个数据框,查看其结构。

data <- data.frame(
    node=c('IOS', 'Android', 'Samsung', 'Apple', 'Huawei', 'Lenovo', 'Xiaomi', 
           'Others', 'LG', 'Oppo', 'Vivo', 'ZTE', 'Other'),
    parent=c(rep(NA, 2), 'Android', 'IOS', rep('Android', 4), rep('Others', 5)),
    series=(rep('Smartphone', 13)),
    value=c(231.5, 1201.4, 324.8, 231.5, 106.6, 74, 70.8, 625.2, 51.7, 49.1,
            42.6, 40, 243))
knitr::kable(data)
node parent series value
IOS NA Smartphone 231.5
Android NA Smartphone 1201.4
Samsung Android Smartphone 324.8
Apple IOS Smartphone 231.5
Huawei Android Smartphone 106.6
Lenovo Android Smartphone 74.0
Xiaomi Android Smartphone 70.8
Others Android Smartphone 625.2
LG Others Smartphone 51.7
Oppo Others Smartphone 49.1
Vivo Others Smartphone 42.6
ZTE Others Smartphone 40.0
Other Others Smartphone 243.0

矩形树图结构由节点和父节点的映射关系决定。

  • 只有’Smartphone’一个系列,所以只得到一个矩形树图。
    • 在’Smartphone’系列中,’IOS’和’Android’的父节点为NA,所以’IOS’和’Android’为矩形树图的根节点。
      • ‘Android’节点之下,父节点有5个水平:’Samsung’, ‘Huawei’, ‘Lenovo’, ‘Xiaomi’ and ‘Others’。所以’Android’节点有5个子节点。
        • ’Others’节点下,另有5个子节点。

在矩形树图下能看到面包屑导航。各矩形块的面积由value决定。

3.2 矩形树图Tree Chart

3.2.1 单个矩形树图Single Treemap

type设为’treemap’.

echartr(data, c(node, parent), value, facet=series, type='treemap') %>%
    setTitle('Smartphone Sales 2015 (Million)', pos=5)

3.2.2 多个矩形树图Multiple Treemaps

稍微修改一下series,获得多个矩形树图。

data1 <- data[3:13,]
data1$series <- c('Android', 'IOS', rep('Android', 9))
data1$parent[1:6] <- NA
knitr::kable(data1)
node parent series value
3 Samsung NA Android 324.8
4 Apple NA IOS 231.5
5 Huawei NA Android 106.6
6 Lenovo NA Android 74.0
7 Xiaomi NA Android 70.8
8 Others NA Android 625.2
9 LG Others Android 51.7
10 Oppo Others Android 49.1
11 Vivo Others Android 42.6
12 ZTE Others Android 40.0
13 Other Others Android 243.0

这样,能够得到两个矩形树图。

echartr(data1, c(node, parent), value, facet=series, type='treemap') %>%
    setTitle('Smartphone Sales 2015 (Million)', pos=5)

4 其他设置Futher Setup

接下来可以配置控件、添加标注点/标注线,以及美化成图。

参考相关函数,尽情探索吧