导语
GUIDE ╲
ECharts是一个基于JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏览器。recharts是开发者根据ECharts2开发的一个R语言接口,它使我们可以用R语言实现ECharts作图。
简介
recharts具有丰富的功能,提供的图形展示包括:地图(eMap),柱状图(eBar),折线图(eLine), 雷达图(eRadar),散点图(ePoints),漏斗图(eFunnel)以及万恶的饼图(ePie)。同时计划对力导向图(eForce), 时间序列散点图(ePoints_timeSeries), 矩阵树图(eTree), 平行坐标图(eParallel) 和桑基图(eSankey)图等。
基于Echarts3的recharts2包仍在开发中。
recharts安装
###通过github安装recharts包
library(devtools)
install_github("madlogos/recharts")
library(recharts)
recharts使用教程
01
数据展示
head(mtcars)
02
core plot
##使用echartr创建基础图表
echartr(mtcars, wt, mpg)
##分配权重,生成气泡图
echartr(mtcars, wt, mpg, am, weight=gear, type='bubble')
多参数混合
g %>% setSeries(series=2, symbolSize=8, symbolRotate=30) %>%
##标线
addMarkLine(data=data.frame(type='average', name1='Avg')) %>%
##标注最大值
addMarkPoint(series=1, data=data.frame(type='max', name='Max')) %>%
##写入图题
setTitle('wt vs mpg', paste0('[Motor Trend](', link, ')'),
textStyle=list(color='red')) %>%
##修改图例
setLegend(selected='Automatic', textStyle=list(color='lime')) %>%
##垂直放置工具箱,并且修改为英文
setToolbox(lang='en', pos=2) %>%
##添加datazoom
setDataZoom() %>%
##修改主题
setTheme('dark', calculable=TRUE) %>%
##symbol形状
setSymbols(c('heart', 'star6'))
03
混合图表的绘制
#先改造一下数据集
d <- data.table::dcast(mtcars, carb+gear~., mean, value.var='mpg')
names(d)[3] <- 'mean.mpg'
d$carb <- as.character(d$carb)
#柱状图和折线图混合
echartr(d, carb, "mean.mpg", gear, type=c('vbar', 'vbar', 'line')) %>%
setSymbols('emptycircle')
在图片右上角的操作板上可以选择单独查看柱状图、折线图或者原始数据。
04
雷达图绘制
##创建一个数据集
d1 <- data.frame(x=rep(LETTERS[1:6], 4), y=abs(rnorm(24)),
f=c(rep('i', 12), rep('ii', 12)),
s=rep(c(rep('I', 6), rep('II', 6)), 2))
echartr(d1, x, y, s, facet=f, type='radar',
subtype=list(c('fill', ''), c('', 'fill')))
05
和弦图绘制
由于ECharts支持多种类型的图表,可能还需要一段时间的开发才能使echartr()真正变得更加智能。 由于ECharts的主要用法是将JavaScript对象传递给方法.setOption(),在R中可以使用列表来构造这样的对象。通过echart.list()方法可以创建任意图表。
使用list去构建数据集,内部包含绘图所需的各个参数。
#通过list去构建数据集
chordEx1 = list(
title = list(
text = '测试数据',
subtext = 'From d3.js',
x = 'right',
y = 'bottom'
),
tooltip = list(
trigger = 'item',
formatter = JS('function(params) {
if (params.indicator2) { // is edge
return params.value.weight;
} else {// is node
return params.name
}
}')
),
toolbox = list(
show = TRUE,
feature = list(
restore = list(show = TRUE),
magicType = list(show = TRUE, type = c('force', 'chord')),
saveAsImage = list(show = TRUE)
)
),
legend = list(
x = 'left',
data = c('group1', 'group2', 'group3', 'group4')
),
series = list(
list(
type = 'chord',
sort = 'ascending',
sortSub = 'descending',
showScale = TRUE,
showScaleText = TRUE,
data = list(
list(name = 'group1'),
list(name = 'group2'),
list(name = 'group3'),
list(name = 'group4')
),
itemStyle = list(
normal = list(
label = list(show = FALSE)
)
),
matrix = rbind(
c(11975, 5871, 8916, 2868),
c( 1951, 10048, 2060, 6171),
c( 8010, 16145, 8090, 8045),
c( 1013, 990, 940, 6907)
)
)
)
)
echart(chordEx1)
06
南丁格尔玫瑰图
str(Titanic)
# 表格按行求和,再进行转换长表达
titanic <- data.table::melt(apply(Titanic, c(1,4), sum))
# 定义列名
names(titanic) <- c('Class', 'Survived', 'Count')
# knitr格式化表达
knitr::kable(titanic)
echartr(titanic, Class, Count, facet=Survived, type='rose', subtype='radius')
文章主要参考:
recharts官网:https://madlogos.github.io/recharts/#-en
小编总结
recharts包虽然仍在开发完善的过程中,但是已经具备了十分强大的交互式可视化功能,小编在这里展示了一些常用图形的绘制函数,仍有很多绘图功能需要大家的继续发掘!在这里也一起期待一下recharts2的问世吧!