百度開源圖標庫Echarts

百度開源圖標庫Echarts


ECharts,縮寫來自Enterprise Charts舆吮,商業(yè)級數據圖表揭朝,一個純Javascript的圖表庫,可以流暢的運行在PC和移動設備上色冀,兼容當前絕大部分瀏覽器(IE6/7/8/9/10/11萝勤,chrome,firefox呐伞,Safari等),底層依賴輕量級的Canvas類庫ZRender慎式,提供直觀伶氢,生動,可交互瘪吏,可高度個性化定制的數據可視化圖表癣防。創(chuàng)新的拖拽重計算、數據視圖掌眠、值域漫游等特性大大增強了用戶體驗蕾盯,賦予了用戶對數據進行挖掘、整合的能力蓝丙。

支持折線圖(區(qū)域圖)级遭、柱狀圖(條狀圖)、散點圖(氣泡圖)渺尘、K線圖挫鸽、餅圖(環(huán)形圖)、雷達圖(填充雷達圖)鸥跟、和弦圖丢郊、力導向布局圖、地圖医咨、儀表盤枫匾、漏斗圖、事件河流圖等12類圖表拟淮,同時提供標題干茉,詳情氣泡、圖例惩歉、值域等脂、數據區(qū)域俏蛮、時間軸、工具箱等7個可交互組件上遥,支持多圖表搏屑、組件的聯動和混搭展現。

Echarts官方網站:http://echarts.baidu.com

Echarts Java類庫:https://github.com/abel533/ECharts

如何使用

Echarts是一個純Javascript圖標庫粉楚,我們需要在html的head中間引入js文件辣恋,官方下載地址:http://echarts.baidu.com/download.html 官方提供了四個版本的下載,建議使用完整版模软,在實際使用中發(fā)現簡易版本可能存在一些特性無法使用的問題伟骨,完整版也只有537KB,并不大燃异,因此強烈建議使用完整版携狭。

一般來說,為了使用Echarts回俐,需要拼接出Echarts需要的配置逛腿,這個工作可以是后端做,也可以是前端做仅颇。來看看一個例子:

option = {
    title: {
        text: '未來一周氣溫變化',
        subtext: '純屬虛構'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data:['最高氣溫','最低氣溫']
    },
    toolbox: {
        show: true,
        feature: {
            dataZoom: {
                yAxisIndex: 'none'
            },
            dataView: {readOnly: false},
            magicType: {type: ['line', 'bar']},
            restore: {},
            saveAsImage: {}
        }
    },
    xAxis:  {
        type: 'category',
        boundaryGap: false,
        data: ['周一','周二','周三','周四','周五','周六','周日']
    },
    yAxis: {
        type: 'value',
        axisLabel: {
            formatter: '{value} °C'
        }
    },
    series: [
        {
            name:'最高氣溫',
            type:'line',
            data:[11, 11, 15, 13, 12, 13, 10],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        },
        {
            name:'最低氣溫',
            type:'line',
            data:[1, -2, 2, 5, 3, 2, 0],
            markPoint: {
                data: [
                    {name: '周最低', value: -2, xAxis: 1, yAxis: -1.5}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'},
                    [{
                        symbol: 'none',
                        x: '90%',
                        yAxis: 'max'
                    }, {
                        symbol: 'circle',
                        label: {
                            normal: {
                                position: 'start',
                                formatter: '最大值'
                            }
                        },
                        type: 'max',
                        name: '最高點'
                    }]
                ]
            }
        }
    ]
};

這是一個折線的代碼部分单默,其效果如下:

image.png

在實際項目中,我們不可能將數據寫死在js中忘瓦,這個時候要么后端利用自己的數據拼接成上面的代碼搁廓,前端利用后端拼接好的代碼直接展示,要么后端將數據傳遞給前端耕皮,前端自己拼接温学。其實不管是哪一種鳄梅,都是比較繁瑣的搞动。在GitHub上午笛,已經有人提供了一個Echarts的類庫,利用該類庫苦锨,后端開發(fā)人員可以很方便的構建所需的對象逼泣,最后Json化后傳遞給前端即可。

代碼示例

后端

Java代碼

    Option option = new Option();
    option.title("**系統同比數據").legend("統計數值");
    option.tooltip(new Tooltip().trigger(Trigger.axis));
    Feature mark = new Mark().show(true);
    Feature dataView = new DataView().show(true).readOnly(true);
    Feature magicType = new MagicType().show(true);
    Feature restore = new Restore().show(true);
    Feature saveAsImage = new SaveAsImage().show(true);
    Toolbox toolbox = new Toolbox().feature(mark, dataView, magicType, restore,  saveAsImage);
    option.toolbox(toolbox);
    option.calculable(true);
    List<String> dateList = Lists.newArrayList();
    List<Number> valueList = Lists.newArrayList();
    for (SummaryData summaryData : summaryDataList) {
      dateList.add(summaryData.getDate());
      valueList.add(summaryData.getValue());
    }
    CategoryAxis categoryAxis = new CategoryAxis().name("日期").data(dateList.toArray());
    categoryAxis.setBoundaryGap(false);
    option.xAxis(categoryAxis);
    option.yAxis(new ValueAxis().name("統計數值").splitArea(new SplitArea().show(true)));
    Line line = new Line();
    line.name(getDataName2Cname().get(name));
    line.setData(valueList);
    line.markLine(new MarkLine().data(new Data().type(MarkType.average)));
    line.markPoint(new MarkPoint().data(new Data().type(MarkType.min),
        new Data().type(MarkType.max)));
    option.series(line);
    return option;

該Java類庫中類的結構基本上和Echarts的結構保持一致舟舒,因此只需要對照Echarts的API文檔就能很快的知道該類庫如何使用拉庶。

得到Option對象后,直接使用Json工具類將其轉化為Json字符串傳遞給前端秃励,注意氏仗,轉為Json字符串時,null值不要包含進來。

前端
<div id="psLine" style="height:600px;"></div>
<script type="text/javascript">
    // 基于準備好的dom皆尔,初始化echarts實例
    var myChart = echarts.init(document.getElementById('psLine'));
    myChart.setOption(${result?no_encode});
</script>

其中呐舔,result即為后端傳過來的字符串,這里之所以加上no_encode慷蠕,是因為后端傳過來的Json字符串會被轉義(并不是普遍現象)珊拼。

展示效果
image.png

更多的使用有待探索。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末流炕,一起剝皮案震驚了整個濱河市澎现,隨后出現的幾起案子,更是在濱河造成了極大的恐慌每辟,老刑警劉巖剑辫,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異渠欺,居然都是意外死亡妹蔽,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門挠将,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讹开,“玉大人,你說我怎么就攤上這事捐名。” “怎么了闹击?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵镶蹋,是天一觀的道長。 經常有香客問我赏半,道長贺归,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任断箫,我火速辦了婚禮拂酣,結果婚禮上,老公的妹妹穿的比我還像新娘仲义。我一直安慰自己婶熬,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布埃撵。 她就那樣靜靜地躺著赵颅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪暂刘。 梳的紋絲不亂的頭發(fā)上饺谬,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音谣拣,去河邊找鬼募寨。 笑死族展,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拔鹰。 我是一名探鬼主播仪缸,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼格郁!你這毒婦竟也來了腹殿?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤例书,失蹤者是張志新(化名)和其女友劉穎锣尉,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體决采,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡自沧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了树瞭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拇厢。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖晒喷,靈堂內的尸體忽然破棺而出孝偎,到底是詐尸還是另有隱情,我是刑警寧澤凉敲,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布衣盾,位于F島的核電站,受9級特大地震影響爷抓,放射性物質發(fā)生泄漏势决。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一蓝撇、第九天 我趴在偏房一處隱蔽的房頂上張望果复。 院中可真熱鬧,春花似錦渤昌、人聲如沸虽抄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽极颓。三九已至,卻和暖如春群嗤,著一層夾襖步出監(jiān)牢的瞬間菠隆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留骇径,地道東北人躯肌。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像破衔,于是被迫代替她去往敵國和親清女。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容

  • 發(fā)現 關注 消息 iOS 第三方庫晰筛、插件嫡丙、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 我是個新媽媽怜瞒,在孕38周6天的時候被迫剖腹產父泳,生下一個男孩;當天孩子轉院吴汪,坐月子頭19天寶寶不在我身邊惠窄,一個人在醫(yī)...
    遛遛心情的溜媽閱讀 463評論 4 3
  • 想起那句“致我們終將逝去的青春”杆融,我們的青春終將逝去,到了那個時候又何以緬懷霜运。似乎我們總要往里加點料擒贸,回味的時候才...
    伊恩希閱讀 1,211評論 1 0
  • 更新:2018.05.24 整理了一下demo:SwiftDemo Swift類是構造代碼的一種通用而靈活的構造體...
    YvanLiu閱讀 1,039評論 1 3
  • 工具:感謝+鼓勵 今天下班回家,廚房有飯菜香飄出觉渴,難道是“田螺姑娘”?一看原來是“田螺大叔”徽惋!工作日的晚上這種場景...
    紫涵0517閱讀 232評論 0 0