首先,加载recharts
:
library(recharts)
树图包括4种基本类型:
关键是:
x
,至少两列:x[,1]为树图节点,x[,2]为树图节点的父节点。根节点的父节点为NA。y
facet
用于生成多棵树echartr(data, x, <y>, <series>, <facet>, <t>, <type>, <subtype>)
变量 | 要求 |
---|---|
data |
数据框格式的源数据 |
x |
文本型自变量。如提供多个变量,只传入前两个: 第一列为节点,第二列为其父节点 |
y |
数值型应变量。如提供多个变量,只传入第一个。 |
series |
转为因子后计算。 |
facet |
转为因子后计算。 |
t |
时间轴变量,转为因子后计算。如提供多个变量,只传入第一个。 |
type |
‘tree’/‘vtree’, ‘tree_inv’/‘vtree_inv’, ‘htree’, ‘htree_inv’. |
subtype |
|
准备一个数据框,显示其典型结构。
data <- data.frame(
node=c('North America', 'USA', 'Canada', 'California', 'New York',
'Massachusetts', 'Quebec', 'Ontario', 'South America',
'Brazil', 'Argentina', 'Rio de Jeneiro', 'Sao Paolo', 'Buenos Aires',
'Mendosa'),
parent=c(NA, rep('North America', 2), rep('USA', 3), rep('Canada', 2),
NA, rep('South America', 2), rep('Brazil', 2), rep('Argentina', 2)),
series=c(rep('Tree 1', 8), rep('Tree 2', 7)),
value=rep(1, 15))
knitr::kable(data)
node | parent | series | value |
---|---|---|---|
North America | NA | Tree 1 | 1 |
USA | North America | Tree 1 | 1 |
Canada | North America | Tree 1 | 1 |
California | USA | Tree 1 | 1 |
New York | USA | Tree 1 | 1 |
Massachusetts | USA | Tree 1 | 1 |
Quebec | Canada | Tree 1 | 1 |
Ontario | Canada | Tree 1 | 1 |
South America | NA | Tree 2 | 1 |
Brazil | South America | Tree 2 | 1 |
Argentina | South America | Tree 2 | 1 |
Rio de Jeneiro | Brazil | Tree 2 | 1 |
Sao Paolo | Brazil | Tree 2 | 1 |
Buenos Aires | Argentina | Tree 2 | 1 |
Mendosa | Argentina | Tree 2 | 1 |
树结构由节点列和父节点列的映射关系决定。
type
设为’tree’。
echartr(data[data$series=='Tree 1',], c(node, parent), value, type='tree') %>%
setTitle('Single Tree')
如facet
赋值以有效的数据结构,可以得到多棵树。 但Echarts 2没有把facet
和图例填色映射好,所以需要单独对多棵树着色。
echartr(data, c(node, parent), value, facet=series, type='tree') %>%
setTitle('Multiple Trees')
type
设为’tree_inv’。然后不妨试验几个subtype
。
echartr(data, c(node, parent), value, facet=series, type='tree_inv',
subtype='broken') %>% setTitle('tree_inv')
type
设为’htree’。
echartr(data, c(node, parent), value, facet=series, type='htree',
subtype='broken + dashed') %>% setTitle('htree')
type
设为’htree_inv’。
echartr(data, c(node, parent), value, facet=series, type='htree_inv',
subtype='broken + dotted') %>% setTitle('htree_inv')
接下来可以配置控件、添加标注点/标注线,以及美化成图。
参考相关函数,尽情探索吧。