首先,加载recharts:

library(recharts)

1 介绍Introduction

树图包括4种基本类型:

  • 水平树图
  • 倒置水平树图
  • 垂直树图
  • 倒置垂直树图

关键是:

  • 文本型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

‘tree’/‘vtree’, ‘tree_inv’/‘vtree_inv’, ‘htree’, ‘htree_inv’.

subtype

  • tree: c(“curve”,“broken”,“dotted”,“dashed”,“solid”)
    • curve: 节点间以曲线联结
    • broken: 节点间以折线连接
    • dotted: 节点间以虚线连接
    • solid: 节点间以实线连接
    • dashed: 节点间以划线连接
  • tree_inv: c(“curve”,“broken”,“dotted”,“dashed”,“solid”)
  • htree: c(“curve”,“broken”,“dotted”,“dashed”,“solid”)
  • htree_inv: c(“curve”,“broken”,“dotted”,“dashed”,“solid”)

3 举例Showcase

3.1 数据准备Data Preparation

准备一个数据框,显示其典型结构。

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

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

  • 有’Tree 1’和’Tree 2’两个系列,所以会产生两棵树。
    • 在数据系列’Tree 1’中,能看到’North America’的父节点为NA。所以,’North America’是这棵树的根节点。
      • 根节点以下,父节点有两个水平:‘USA’和’Canada’。所以’Tree 1’树在根节点’North America’下包含两个第一层节点。
        • 有三个节点以’USA’为父节点: ‘California’, “New York” 和 “Massachusetts”
        • 有两个节点以’Canada’为父节点: ‘Ontario’ 和 ‘Quebec’

3.2 树图Tree Chart

3.2.1 单棵树图Single Tree

type设为’tree’。

echartr(data[data$series=='Tree 1',], c(node, parent), value, type='tree') %>%
    setTitle('Single Tree')

3.2.2 多棵树图Multiple Trees

facet赋值以有效的数据结构,可以得到多棵树。 但Echarts 2没有把facet和图例填色映射好,所以需要单独对多棵树着色。

echartr(data, c(node, parent), value, facet=series, type='tree') %>%
    setTitle('Multiple Trees')

3.3 倒置树图Inverse Tree Chart

type设为’tree_inv’。然后不妨试验几个subtype

echartr(data, c(node, parent), value, facet=series, type='tree_inv',
        subtype='broken') %>% setTitle('tree_inv')

3.4 水平树图Horizontal Tree

type设为’htree’。

echartr(data, c(node, parent), value, facet=series, type='htree', 
        subtype='broken + dashed') %>% setTitle('htree')

3.5 倒置水平树图Inverse Horzontal Tree

type设为’htree_inv’。

echartr(data, c(node, parent), value, facet=series, type='htree_inv', 
        subtype='broken + dotted') %>% setTitle('htree_inv')

4 其他设置Futher Setup

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

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