首先,加载recharts
:
library(recharts)
矩形树图包括一种类型:treemap
关键是:
x
,至少两列:x[,1]为树图结点,x[,2]为节点的父节点。根节点的父节点为NA。y
facet
用于生成多个矩形树图echartr(data, x, <y>, <series>, <facet>, <t>, <type>, <subtype>)
变量 | 要求 |
---|---|
data |
数据框格式的源数据 |
x |
文本型自变量。如提供多个变量,只传入前两个: 第一列为节点,第二列为其父节点。 |
y |
数值型应变量。如提供多个变量,只传入第一个。 |
series |
转为因子后计算。 |
facet |
转为因子后计算。 |
t |
时间轴变量,转为因子后计算。如提供多个变量,只传入第一个。 |
type |
‘treemap’. |
准备一个数据框,查看其结构。
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 |
矩形树图结构由节点和父节点的映射关系决定。
在矩形树图下能看到面包屑导航。各矩形块的面积由value
决定。
type
设为’treemap’.
echartr(data, c(node, parent), value, facet=series, type='treemap') %>%
setTitle('Smartphone Sales 2015 (Million)', pos=5)
稍微修改一下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)
接下来可以配置控件、添加标注点/标注线,以及美化成图。
参考相关函数,尽情探索吧