ECharts 4的R语言接口实现, 详细说明文档和案例请查看echarter 。
我之前一直使用highcharter做交互式数据可视化,因为工作的需要开始使用echarts,期间主要使用过两个echarts包,cosname/recharts和JohnCoene/echarts4r。因为使用highcharter
比较久,也习惯了它的的实现方式,以及highcharts
丰富的官方文档和社区帮助。所以我按照highcharter
的方式,尝试开发了echarter
。取名为echarter
,也是为了向highcharter
致敬。并且也参考了cosname/recharts和JohnCoene/echarts4r的实现方式。
这是我第一次开发完整的package,不足之处欢迎大家指正。
echarter包的源代码在分享在Github,jeevanyue/echarter,可通过下列方式安装。
devtools::install_github("jeevanyue/echarter")
支持官方配置项的所有组件,详细可以查看官方文档option和案例。
- ec_title
- ec_legend
- ec_backgroundColor
- ec_colors
- ec_tooltip
- ec_graphic
- ec_axisPointer
- ec_toolbox
- ec_visualMap
- ec_dataZoom
- ec_timeline
- ec_brush
- ec_mark
- 二维的直角坐标系grid/cartesian2d,默认为空
- 极坐标系polar
- 平行坐标系parallel,只限于series.parallel
- 单轴坐标系singleAxis
- 地理坐标系geo
- 日历坐标系calendar
- 雷达坐标系radar,只限于series.radar
- 不使用坐标系none
支持的图表类型: line, bar, scatter, effectScatter, boxplot, candlestick, pictorialBar, custom
暂时只支持data.frame和json两种数据格式。
如果是data.frame,会通过jsonlite::toJSON(setNames(data, NULL))
转为json,并默认dimensions = colnames(data)
。如果是json,会直接取用该数据,并默认dimensions = NULL
。
通过ec_dataset导入数据,需要提前对数据进行预处理,后续再对这个组件进行拓展。
目前支持的数据类型有,data.frame, matrix, numeric, character, tx, forecast.
添加数据的方式我根据两个属性进行判断,坐标系和图表类型。
有坐标系的图表,包括line、bar、scatter、effectScatter、boxplot、candlestick、pictorialBar、lines、heatmap、themeRiver,数据添加方式的分类:
无坐标系的图表,包括pie、map、funnel、guage、tree、treemap、sunburst、sankey、graph,数据添加方式的分类:
支持除了GL的所有图表类型,包括水球图liquidfill和字符云wordcloud,详见基本图表和高级图表。
支持echarter来快速绘图。
可以通过下列四种方式设置主题,详见echarter.theme。
- 支持自带的theme: dark, infographic, macarons, roma, shine, vintage,
echart(theme = 'dark')
- 导入echarts theme 构建工具的js主题文件,
echart(theme = '**.js')
- 导入
ec_theme
构建的主题,echart(theme = thm)
导入 - 修改全局主题
getOption("echarter.option")
,该方式目前还没有跟所有图表类型匹配,建议采用以上三种方式
shiny通过renderEcharts
和echartsOutput
实现。
- cosname/recharts - ECharts4
- JohnCoene/echarts4r - ECharts4
- yihui/recharts - ECharts2
- madlogos/recharts - ECharts2 forked from yihui/recharts
- madlogos/recharts2 - ECharts3
- ChanningWong/REcharts3 - ECharts3
- XD-DENG/ECharts2Shiny - ECharts3