echarts-for-react

簡介

使用echarts-for-react插件可以在React中調(diào)用echarts接口直接渲染出Echarts圖表杆怕,只要傳入相關(guān)的參數(shù)和數(shù)據(jù)即可叙凡。代碼簡介窖认,功能使用劲藐。

安裝

npm install --save echarts-for-react
 
# `echarts` is the peerDependence of `echarts-for-react`, you can install echarts with your own version. 
npm install --save echarts

DEMO演示

git clone https://github.com/hustcc/echarts-for-react.git
 
npm install
 
npm start
demo效果

demo中可以看到各種不同類型的圖表畦贸,在項目開發(fā)過程中有需要可以查閱陨闹,copy相關(guān)的代碼,或者查看圖表的數(shù)據(jù)格式薄坏,了解圖表的相關(guān)功能正林,以便更好地引用及重構(gòu)圖表。

使用

import * as React from "react";
import ReactEcharts from "echarts-for-react";
 
<ReactEcharts
  option={this.getOption()}
  notMerge={true}
  lazyUpdate={true}
  theme={"theme_name"}
  onChartReady={this.onChartReadyCallback}
  onEvents={EventsDict}
  opts={} />

也可手動導(dǎo)入echarts.js模塊以減小包大小

import React from 'react';
// import the core library.
import ReactEchartsCore from 'echarts-for-react/lib/core';
 
// then import echarts modules those you have used manually.
import echarts from 'echarts/lib/echarts';
// import 'echarts/lib/chart/line';
import 'echarts/lib/chart/bar';
// import 'echarts/lib/chart/pie';
// import 'echarts/lib/chart/scatter';
// import 'echarts/lib/chart/radar';
 
// import 'echarts/lib/chart/map';
// import 'echarts/lib/chart/treemap';
// import 'echarts/lib/chart/graph';
// import 'echarts/lib/chart/gauge';
// import 'echarts/lib/chart/funnel';
// import 'echarts/lib/chart/parallel';
// import 'echarts/lib/chart/sankey';
// import 'echarts/lib/chart/boxplot';
// import 'echarts/lib/chart/candlestick';
// import 'echarts/lib/chart/effectScatter';
// import 'echarts/lib/chart/lines';
// import 'echarts/lib/chart/heatmap';
 
// import 'echarts/lib/component/graphic';
// import 'echarts/lib/component/grid';
// import 'echarts/lib/component/legend';
import 'echarts/lib/component/tooltip';
// import 'echarts/lib/component/polar';
// import 'echarts/lib/component/geo';
// import 'echarts/lib/component/parallel';
// import 'echarts/lib/component/singleAxis';
// import 'echarts/lib/component/brush';
 
import 'echarts/lib/component/title';
 
// import 'echarts/lib/component/dataZoom';
// import 'echarts/lib/component/visualMap';
 
// import 'echarts/lib/component/markPoint';
// import 'echarts/lib/component/markLine';
// import 'echarts/lib/component/markArea';
 
// import 'echarts/lib/component/timeline';
// import 'echarts/lib/component/toolbox';
 
// import 'zrender/lib/vml/vml';
 
<ReactEchartsCore
  echarts={echarts}
  option={this.getOption()}
  notMerge={true}
  lazyUpdate={true}
  theme={"theme_name"}
  onChartReady={this.onChartReadyCallback}
  onEvents={EventsDict}
  opts={} />

組件的參數(shù)簡介

  • option (required, object)

這個是核心颤殴,是必須的觅廓,包含echarts圖表的配置項和數(shù)據(jù),如標題title涵但、圖例legend杈绸、提示框tooltip、x軸xAxis矮瘟、y軸yAxis瞳脓、series等,詳見 http://echarts.baidu.com/option.html#title.

  • notMerge (optional, object)

可選澈侠,是否不跟之前設(shè)置的 option 進行合并劫侧,默認為 false,即合并。

  • lazyUpdate (optional, object)

可選烧栋,在設(shè)置完 option 后是否不立即更新圖表写妥,默認為 false,即立即更新审姓。

  • style (optional, object)

包含echarts圖表的div的樣式珍特,默認是{height: '300px'}.

  • className (optional, string)

包含echarts圖表的div的類名. 可以根據(jù)需要自行配置類名,不同類配置不同的css魔吐。

  • theme (optional, string)

應(yīng)用的主題扎筒。可以是一個主題的配置對象酬姆,也可以是使用已經(jīng)通過 echarts.registerTheme 注冊的主題名稱嗜桌。

(主題對象的格式樣例: https://github.com/ecomfe/echarts/blob/master/theme/dark.js).

通過registerTheme注冊主題:

// import echarts
import echarts from 'echarts';
...
// register theme object
echarts.registerTheme('my_theme', {
  backgroundColor: '#f4cccc'
});
...
// render the echarts use option `theme`
<ReactEcharts
  option={this.getOption()}
  style={{height: '300px', width: '100%'}}
  className='echarts-for-echarts'
  theme='my_theme' />
  • onChartReady (optional, function)

當(dāng)圖表準備好時,將圖表作為參數(shù)傳給回調(diào)函數(shù)

  • loadingOption (optional, object)

  • showLoading (optional, bool, default: false)

是否加載動畫效果

  • onEvents (optional, array(string=>function) )

為圖表綁定事件

let onEvents = {
  'click': this.onChartClick,
  'legendselectchanged': this.onChartLegendselectchanged
}
...
<ReactEcharts
  option={this.getOption()}
  style={{height: '300px', width: '100%'}}
  onEvents={onEvents} />

參見: http://echarts.baidu.com/api.html#events

  • opts (optional, object)

附加參數(shù)辞色。有下面幾個可選項:

devicePixelRatio
設(shè)備像素比症脂,默認取瀏覽器的值window.devicePixelRatio
renderer
渲染器淫僻,支持 'canvas' 或者 'svg'诱篷。參見 使用 Canvas 或者 SVG 渲染
width
可顯式指定實例寬度雳灵,單位為像素棕所。如果傳入值為 null/undefined/'auto',則表示自動取 dom(實例容器)的寬度悯辙。
height
可顯式指定實例高度琳省,單位為像素。如果傳入值為 null/undefined/'auto'躲撰,則表示自動取 dom(實例容器)的高度针贬。

組件API和ECharts API

對于組件來說,只有一個API——getEchartsInstance()拢蛋,用來獲取Echarts的實例對象桦他。獲取到對象后就可以使用任意的Echarts API。

// render the echarts component below with rel
<ReactEcharts ref={(e) => { this.echarts_react = e; }}
  option={this.getOption()} />
 
// then get the `ReactEcharts` use this.echarts_react
 
let echarts_instance = this.echarts_react.getEchartsInstance();
// then you can use any API of echarts.
let base64 = echarts_instance.getDataURL();

Echarts的API請參見:Echarts API

使用這些API可以實現(xiàn)以下功能:

  • 綁定/解綁事件
  • 設(shè)置帶有動態(tài)數(shù)據(jù)的動態(tài)圖表
  • 獲取echarts dom/dataurl/base64谆棱,將圖表保存到png快压。
  • 發(fā)布圖表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垃瞧,隨后出現(xiàn)的幾起案子蔫劣,更是在濱河造成了極大的恐慌,老刑警劉巖个从,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脉幢,死亡現(xiàn)場離奇詭異歪沃,居然都是意外死亡,警方通過查閱死者的電腦和手機嫌松,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門沪曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豆瘫,你說我怎么就攤上這事【罩担” “怎么了外驱?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腻窒。 經(jīng)常有香客問我昵宇,道長,這世上最難降的妖魔是什么儿子? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任瓦哎,我火速辦了婚禮,結(jié)果婚禮上柔逼,老公的妹妹穿的比我還像新娘蒋譬。我一直安慰自己,他們只是感情好愉适,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布犯助。 她就那樣靜靜地躺著,像睡著了一般维咸。 火紅的嫁衣襯著肌膚如雪剂买。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天癌蓖,我揣著相機與錄音瞬哼,去河邊找鬼。 笑死租副,一個胖子當(dāng)著我的面吹牛坐慰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播用僧,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼讨越,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了永毅?” 一聲冷哼從身側(cè)響起把跨,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沼死,沒想到半個月后着逐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年耸别,在試婚紗的時候發(fā)現(xiàn)自己被綠了健芭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡秀姐,死狀恐怖慈迈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情省有,我是刑警寧澤痒留,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站蠢沿,受9級特大地震影響伸头,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舷蟀,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一恤磷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧野宜,春花似錦扫步、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旬牲,卻和暖如春仿粹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背原茅。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工吭历, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人擂橘。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓晌区,卻偏偏與公主長得像,于是被迫代替她去往敵國和親通贞。 傳聞我的和親對象是個殘疾皇子朗若,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容