前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可以绘制ECharts交互式图表啦!

R语言可以绘制ECharts交互式图表啦!

作者头像
作图丫
发布2022-03-29 13:44:06
1.8K0
发布2022-03-29 13:44:06
举报
文章被收录于专栏:作图丫

导语

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安装

代码语言:javascript
复制
###通过github安装recharts包
library(devtools)
install_github("madlogos/recharts")
library(recharts)

recharts使用教程

01

数据展示

代码语言:javascript
复制
head(mtcars)

02

core plot

代码语言:javascript
复制
##使用echartr创建基础图表
echartr(mtcars, wt, mpg)
代码语言:javascript
复制
##分配权重,生成气泡图
echartr(mtcars, wt, mpg, am, weight=gear, type='bubble')

多参数混合

代码语言:javascript
复制
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

混合图表的绘制

代码语言:javascript
复制
#先改造一下数据集
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

雷达图绘制

代码语言:javascript
复制
##创建一个数据集
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去构建数据集,内部包含绘图所需的各个参数。

代码语言:javascript
复制
#通过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

南丁格尔玫瑰图

代码语言:javascript
复制
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的问世吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档