Git Product home page Git Product logo

recharts's Introduction

v 0.1

中文

An R Interface to Baidu Echarts2

Echarts2 is an open source javascript visualization library developed by Baidu Inc. for interactive charts. Compared to other popular js libraries, Echarts is more Chinese-friendly. The latest stable release of Echarts2 is 2.2.7. The most up-to-date version is Echarts 3.2.3.

This package is to facilitate R users to make use of Echarts2 library (Echarts3 is not supported yet). A hello world example is as below:

echartr(iris, Sepal.Length, Sepal.Width, Species) %>% setTheme('macarons')

hello_world

The initial recharts package was developed by Yang Zhou and Taiyun Wei. The current branch was forked from Yihui Xie.

Installation

if (!require(devtools)) library(devtools)
devtools::install_github('madlogos/recharts')

As the package is under development, you may come across errors when requiring the package directly from Github. You can alternatively download the codes from Github and compile the codes using RStudio.

Documentation

Development

The package was developed using RStudio under Ubuntu 16.

Design

The Echarts object is an S3 list, comprising of the following elements:

(1) Timeline contained

- timeline
- options
    - series
        - list 1
        - ...
    - widgets (title, legend, toolbox, dataRange, dataZoom, roamController)
    - ...

(2) No timeline contained

- series
    - list 1
    - ...
- widgets (title, legend, toolbox, dataRange, dataZoom, roamController)
- ...

The basic design is to configure an S3 object widget by widget and concatenate them by pipe operator (%>%). It is inspired by ggplot2.

The core function is echartr, which accepts basic settings of data source, variables, chart types and then constructs the framework of the S3 object (options part of the Echarts DOM object).

Then echartr parses the data source and calls series processing functions (series_scatter, series_bar, series_line, ...) to build the series part of the options object.

Then you can tune the series using the low-level function setSeries.

Then you can add more objects (addMarkLine, addMarkPoint, addHeatmap, addNameMap, ...) to the echarts object.

Then you can configure other widgets in the echarts object created by echartr to create/modify the widgets. E.g, setTitle, setLegend, setToolbox, setDataZoom, setDataRange, setTimeline, setRoam, axes such as setAxis, setPolar and aesthetics such as setGrid, setSymbols, setTooltip, setTheme.

Finally, you can use relocWidgetfunctions to relocate/resize the echarts object step further.

Status

Achievements

Current version is 0.0.6.

  • Major part of core function echartr
  • Major part of widget functions setTitle, setLegend, setDataRange, setDataZoom, setToolbox, setTimeline, setRoam
  • Additional element functions addMarkLine, addMarkPoint, addNameMap, addHeatmap, addGeoCoord
  • Major part of Axis/grid functions setAxis, setPolar, setGrid
  • Major part of aesthetic function relocWidget, setTheme, setSymbols, setTooltip
  • Series processing fuenctions series_scatter, series_bar, series_line, series_k, series_pie, series_funnel, series_radar, series_map, series_force, series_chord, series_gauge, series_wordCloud, series_tree, series_treemap, series_venn, series_riverEvent, series_heatmap

Supported chart types

  1. Mono-coordinate System
    1. Cartesian Coordinate System
      1. Scatter
        1. scatter|bubble
      2. Bar
        1. bar|hbar
        2. vbar|column
        3. histogram|hist
      3. Line
        1. line
        2. curve
        3. area
        4. wave
      4. K
        1. k|candlestick
      5. eventRiver
        1. eventRiver
    2. Others
      1. Force
      2. Chord
      3. Word Cloud
      4. Venn Chart
      5. Heatmap
  2. Multi-coordinate System
    1. Polar Coordinate System
      1. Pie
        1. pie
        2. ring
        3. Rose
      2. Funnel
        1. Funnel
        2. Pyramid
      3. Radar Chart
      4. Gauge Chart
    2. Others
      1. Map
      2. Tree Chart
      3. Treemap

To-do

  • Tool functions to configure series precisely
  • Bug fix
  • Optimize algorithms

License

Under the terms of MIT + file license.


百度Echarts2的R语言接口

Echarts2是百度发布的一个开源javascript图形库,用于创建交互图。与其他流行的js库相比,Echarts对中文更友好。Echarts2最新的发布版为2.2.7,而Echarts家族的最新版本为3.2.3。

该加载包是为了便利R用户使用Echarts2库 (目前仍不支持Echarts3). 下面是一个hello world案例:

echartr(iris, Sepal.Length, Sepal.Width, Species) %>% setTheme('macarons')

hello_world

recharts起先由Yang Zhou和Taiyun Wei开发。当前分支fork自Yihui Xie

安装

if (!require(devtools)) library(devtools)
devtools::install_github('madlogos/recharts')

此包仍在开发中,从Github直接安装可能遇到错误。可以从Github下载源代码包,然后在RStudio里编译。

文档

开发

该包在Ubuntu 16下用RStudio开发。

设计

Echarts对象其实是一个S3列表,包括下列元素:

(1) Timeline contained

- timeline
- options
    - series
        - list 1
        - ...
    - widgets (title, legend, toolbox, dataRange, dataZoom, roamController)
    - ...

(2) No timeline contained

- series
    - list 1
    - ...
- widgets (title, legend, toolbox, dataRange, dataZoom, roamController)
- ...

基本设计是逐个控件地配置S3对象,并用%>%串联起来。这一思路受到了ggplot2启发。

核心函数是echartr,它接受源数据、变量、图类型等基本设置,然后构建出一个基础的S3对象框架(Echarts DOM对象的options部分)。

然后echartr解析源数据并调用数据系列处理函数(series_scatter, series_bar, series_line, ...)构建出options对象中的series部分。

接下来你就可以调用低级函数setSeries微调series了。

然后可以往这个Echarts对象中添加其他控件(addMarkLine, addMarkPoint, addHeatmap, addNameMap, ...)。

在然后可以在这个Echarts对象中配置其他控件的各项参数,比如setTitle, setLegend, setToolbox, setDataZoom, setDataRange, setTimeline, setRoam, 或者坐标轴,如setAxis, setPolar 以及美工,比如setGrid, setSymbols, setTooltip, setTheme.

最后,可以用relocWidget函数调整控件位置/尺寸。

状态

成果

当前版本0.0.6.

  • 核心函数echartr的主体
  • 控件函数setTitle, setLegend, setDataRange, setDataZoom, setToolbox, setTimeline, setRoam的主体
  • 额外控件函数addMarkLine, addMarkPoint, addNameMap, addHeatmap, addGeoCoord
  • 坐标轴/绘图区函数setAxis, setPolar, setGrid
  • 美工函数relocWidget, setTheme, setSymbols, setTooltip
  • 数据系列处理函数series_scatter, series_bar, series_line, series_k, series_pie, series_funnel, series_radar, series_map, series_force, series_chord, series_gauge, series_wordCloud, series_tree, series_treemap, series_venn, series_riverEvent, series_heatmap

支持的图类型

  1. 单坐标系
    1. 直角坐标系
      1. 散点图
        1. scatter|bubble
      2. 柱图
        1. bar|hbar
        2. vbar|column
        3. histogram|hist
      3. 线图
        1. line
        2. curve
        3. area
        4. wave
      4. K线图
        1. k|candlestick
      5. 事件河流图
        1. eventRiver
    2. 其他
      1. Force
      2. Chord
      3. Word Cloud
      4. Venn Chart
      5. Heatmap
  2. 多坐标系
    1. 极坐标系
      1. 饼图
        1. pie
        2. ring
        3. Rose
      2. 漏斗图
        1. Funnel
        2. Pyramid
      3. Radar Chart
      4. Gauge Chart
    2. 其他
      1. Map
      2. Tree Chart
      3. Treemap

下一步

  • 更多工具函数,以便精确设置数据系列
  • 修补bug
  • 优化算法

许可

MIT + file license

recharts's People

Contributors

yihui avatar madlogos avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.