--- title: "Introduction to echarty" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Introduction to echarty} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} editor_options: markdown: wrap: 72 --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Description **echarty** provides a lean interface between R and Javascript library [ECharts](https://echarts.apache.org/en/index.html).\ We encourage users to follow the original ECharts [API documentation](https://echarts.apache.org/en/option.html) to construct charts with echarty.\ Main command **ec.init** can set multiple native ECharts options to build a chart.\ The benefits - learn a very limited set of commands, and enjoy the **full functionality** of ECharts. ## Package Conventions pipe-friendly - supports both %\>% and \|\>\ commands have three prefixes to help with auto-completion: - **ec.** for general functions, like *ec.init* - **ecs.** for Shiny functions, like *ecs.output* - **ecr.** for rendering functions, like *ecr.band* ## Events Event handling in **Shiny** is done through callbacks.
See considerable sample code in [eshiny.R](https://github.com/helgasoft/echarty/blob/main/demo/eshiny.R), run as `demo(eshiny)`.
There are three built-in event callbacks - *click*, *mouseover*, *mouseout*. All other ECharts [events](https://echarts.apache.org/en/api.html#events) could be initialized through `ec.init(capture=...)`.
For event handling in R (without Shiny) use parameter `ec.init(on=...)` which expects JavaScript handlers. Search for 'event' in [code examples](https://github.com/helgasoft/echarty/blob/main/demo/examples.R). ## ECharts initialization parameters Chart initialization is performed by the _echarty::ec.init()_ command.
Here is full list of _ec.init_ optional parameters: - _ask, js, elementId, ctype, xtKey, dbg_ are specific to _echarty_
- _theme, iniOpts, on, off, capture, group_ belong to the ECharts [chart instance](https://echarts.apache.org/en/api.html#echartsInstance) object.
- _connect, disconnect, registerMap, registerTheme, registerLocale, registerCustomSeries_ are commands of the global [ECharts object](https://echarts.apache.org/en/api.html#echarts). There are R [code examples](https://github.com/helgasoft/echarty/blob/main/demo/examples.R) for some of these parameters. ## R vs Javascript numbering R language counting starts from 1.
Javascript (JS) counting starts from 0.
*ec.init* supports R-counting of indexes (ex. encode) and dimension (ex. visualMap).
All other contexts like *ec.upd* or *ecs.proxy* require JS-counting of indexes and dimensions. ## Javascript built-in functions To allow access to charts from JS.
**ec_chart(id)** - get the chart object by id
**ec_option(id)** - get the chart's option object by id
Parameter _id_ could be the internal JS variable *echwid*, or the value set through *ec.init* parameter *elementId*. See [code examples](https://github.com/helgasoft/echarty/blob/main/demo/examples.R). ## Column-to-style binding with encode ECharts [series encode](https://echarts.apache.org/en/option.html#series-bar.encode) enables binding axes and tooltip to data columns. Echarty enhances this method for all [series data](https://echarts.apache.org/en/option.html#series-bar.data) parameters like itemStyle,labels,emphasis,etc. The bindings are set through `series$encode$data`. For instance
`encode= list(data= list(value= c('xc','yc'), itemStyle= list(opacity= 'oc')))`
would match columns _xc,yc,oc_ to each item's value and opacity. The result is a new `series$data` added to the series. It permits to finely customize chart elements directly from data.
Echarty has also an alternative tool, style-named columns with `ec.data(..nasep)`, but `encode$data` offers more flexibility. It is not compatible with _timeline_ however. ## Code examples Here is the complete list of sample code **locations**: - website [gallery](https://helgasoft.github.io/echarty/articles/gallery.html) - collection of [code examples](https://github.com/helgasoft/echarty/blob/main/demo/examples.R) - Shiny code is in [eshiny.R](https://github.com/helgasoft/echarty/blob/main/demo/eshiny.R), run with `demo(eshiny)` - demos on [RPubs](https://rpubs.com/echarty) - searchable [gists](https://gist.github.com/helgasoft) - answers to [Github issues](https://github.com/helgasoft/echarty/issues) - code in [Github tests](https://github.com/helgasoft/echarty/tree/main/tests/testthat) - command examples, like in *?ec.init* ## Global Options Options are set with R command [options](https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/options). Echarty uses the following options: - echarty.theme = name of theme file, without extension, from folder `/inst/themes` - echarty.font = font family name - echarty.urlTiles = tiles URL template for leaflet maps ```{r opt, message=FALSE, echo=TRUE} # set/get global options options('echarty.theme'='jazz') # set getOption('echarty.theme') # get options('echarty.theme'=NULL) # remove ```