echarter: ECharts的R語言接口(一)

歡迎關注天善智能,我們是專注於商業智能BI,人工智能AI,大數據分析與挖掘領域的垂直社區,學習,問答、求職一站式搞定!

對商業智能BI、大數據分析挖掘、機器學習,python,R等數據領域感興趣的同學加微信:tstoutiao,邀請你進入數據愛好者交流群,數據愛好者們都在這兒。

作者:JeevanYue R語言中文社區專欄作者

知乎ID:https://www.zhihu.com/people/jeevanyue

GitHub:https://github.com/jeevanyue

前言

我之前主要使用Joshua Kunst 的highcharter做交互式數據可視化,highcharter是highcharts的R語言接口,但highcharter不對highcharts的配置項做重新的定義,基本根據highcharts的API來實現,可以很方便 的使用highcharts官方豐富的教程和案例,以及各種社區幫助,用起來真的非常方便的。

最近我們公司將為客戶提供Dashboard數據展示,我是用highcharter做了可視化Demo,但是因為highcharts商用收費,所以開發團隊使用了百度的ECharts來實現。

為了跟開發同事更好交流溝通,讓生產實現與Demo更貼近,所以我想到ECharts也有R語言接口,最後在Github找到下面這麼多實現ECharts的R語言接口。

  • 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

ECharts的R語言接口真的挺多的,我重點看了前兩個包,因為都是基於最新的ECharts4,作者沒有棄坑,最近也有更新維護。但是在學習應用這兩個包的過程中發現,為了實現某個案例,自己要學習兩個接口,ECharts的R語言接口和ECharts的API配置項,並且要不停相互比對。並且在ECharts社區中找到的幫助,常常在R語言接口無法實現。

弄到最後,我已經對ECharts的API配置項比較熟悉了,後來我就決定嘗試開發一個ECharts的R語言接口,畢竟我也用了挺多htmlwidgets,但從來沒有自己動手開發過一個。所以主要參考highcharter對highcharts的實現方式,開始著手開發echarter。取名為echarter,也是為了向highcharter致敬。

並且還參考學習了cosname/recharts和JohnCoene/echarts4r的ECharts實現方式。

歡迎大家指正。

1.介紹

echarter是ECharts的R語言接口實現,ECharts是一個使用 JavaScript 實現的開源可視化庫,可以流暢的運行在PC和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的矢量圖形庫ZRender,提供直觀,交互豐富,可高度個性化定製的數據可視化圖表。

ECharts特性:

  • 豐富的可視化類型
  • 多種數據格式無需轉換直接使用
  • 千萬數據的前端展現
  • 移動端優化
  • 多渲染方案,跨平臺使用
  • 深度的交互式數據探索
  • 多維數據的支持以及豐富的視覺編碼手段
  • 動態數據
  • 絢麗的特效

2.echarter的安裝

echarter包的源代碼發佈在Github,jeevanyue/echarter,可通過下列代碼安裝。

devtools::install_github("jeevanyue/echarter")

3.官方案例

echartsExample取自於cosname/recharts。

echartsExample提供了一種從官網的官方實例中獲取JS代碼並運行的途徑, 除去某些需要加載JSON數據文件的例子, echartsExample`支持大部分Echarts的官網案例.

這個函數支持的範圍比較廣, 包括Echarts的基本繪圖, ecstat, bamap等高級功能, 是JS代碼的源生接口

參數:

  • url 例子的網址, 比如
  • ’http://echarts.baidu.com/demo.html#bubble-gradient’
  • JScontent 需要執行的JS代碼(方便複製例子裡面的代碼調試執行), 注意要命名一個option對象用於數據加載
  • height 繪圖區域的高度
  • weight 繪圖區域的寬度, 支持百分比

從http://echarts.baidu.com/demo.html#effectScatter-bmap 獲取代碼, 並轉換為R繪圖.

library(tidyverse)
library(echarter)
url = "http://echarts.baidu.com/examples/editor.html?c=bar-tick-align"
echartsExample(url)
echarter: ECharts的R語言接口(一)

4.API函數

4.1演示數據

library(tidyverse)
library(lubridate)
library(echarter)
weekDays dat saleNum = round(runif(21, 20, 100), 0),
fruit = c(rep("Apple", 7), rep("Pear", 7), rep("Banana", 7)),
weekDay = c(rep(weekDays,3)),
price = round(runif(21, 10, 20), 0),
stringsAsFactors = FALSE)
dat_list %
select(-price) %>%
spread(weekDay, saleNum) %>%
unite("value", c('Mon','Tues','Wed','Thurs','Fri','Sat','Sun'))
dat_list$value as.numeric(strsplit(dat_list$value, "_")[[x]])})
## echart從0開始索引
dat_matrix fruit = as.numeric(factor(c(dat$fruit), levels = c('Apple', 'Pear', 'Banana'))) - 1,
weekDay = as.numeric(factor(c(dat$weekDay), levels = c('Mon','Tues','Wed','Thurs','Fri','Sat','Sun'))) - 1,
saleNum = dat$saleNum
) %>%
as.matrix()
dat_date date = as.Date('2017-01-01') + seq(0,364),
value = round(runif(365, 0, 1000), 0),
stringsAsFactors = FALSE)
AQI dat_geo %
select(城市, lng, lat, AQI)
opt = list(
xAxis = list(
show = TRUE,
type = 'category',
name = '星期',
data = c('Mon','Tues','Wed','Thurs','Fri','Sat','Sun')),
yAxis = list(
show = TRUE,
type = 'value'),
series = list(
list(
type = 'line',
name = 'Apple',
data = c(12, 5, 20, 36, 10, 10, 20)))
)

4.2基礎組件

4.2.1 ec_title

echart(opt, elementId = "ec") %>%
ec_title(text = '演示數據')
echarter: ECharts的R語言接口(一)

4.2.2 ec_legend

echart(opt) %>%
ec_legend(
top = 'middle', right = 'right',
data = list(list(name = 'Apple', icon = 'circle')),
textStyle = list(color = 'contrastColor'))
echarter: ECharts的R語言接口(一)

4.2.3 ec_backgroundColor

echart(opt) %>%
ec_backgroundColor(c('#24273e'))
echarter: ECharts的R語言接口(一)

4.2.4 ec_colors

echart(opt) %>%
ec_colors(c('#247ba0', '#70c1b3', '#b2dbbf'))
echarter: ECharts的R語言接口(一)

echarter: ECharts的R語言接口(一)

echarter: ECharts的R語言接口(一)

回覆 爬蟲 爬蟲三大案例實戰

回覆 Python 1小時破冰入門

回覆 數據挖掘 R語言入門及數據挖掘

回覆 人工智能 三個月入門人工智能

回覆 數據分析師 數據分析師成長之路

回覆 機器學習 機器學習的商業應用

回覆 數據科學 數據科學實戰

回覆 常用算法 常用數據挖掘算法


分享到:


相關文章: