Echarts简介
echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,来自百度。。。我想应该够简洁了
使用Echarts
目前,就官网的文档显示,使用echarts有两种方式,echarts3之前的版本使用“模块化包引入”,echarts3还可以使用标签引入。例如
模块化包引入:这里的echarts.js从,下载完后解压,用到的文件就是echarts-2.2.7\build\dist下的
- <body>
- <div id="main" style="height:400px;"></div>
- ...
- <script src="./js/echarts.js"></script>
- <script type="text/javascript">
- require.config({
- paths: {
- echarts: './js/dist/chart'
- }
- });
- require(
- [
- 'echarts',
- 'echarts/chart/line',
- 'echarts/chart/bar'
- ],
- function (ec) {
- var myChart = ec.init(document.getElementById('main'));
- var option = {
- ...
- }
- myChart.setOption(option);
- }
- );
- </script>
- </body>
标签引入:这里的echarts.js从,推荐下载这个(如图),因为这个只有一个文件
使用方式超简单:
- <html>
- <head>
- <meta charset="utf-8">
- <title>title</title>
-
- <script src="js/echarts.js"></script>
- </head>
- <body>
- <div id="main" style="width: 600px;height:400px;"></div> // 一样的定义一个待用的div,一定要指定宽度、高度,给个id
- <script type="text/javascript">
- var myChart = echarts.init(document.getElementById('main')); // 直接开始初始化,还是要用原生javascript
- var option = { <pre name="code" class="javascript"> // 图表的定义数据
- };
- myChart.setOption(option); // 加载图表
- </script>
- </body>
- </html>
动态加载折线图数据(series),动态加载图例(legend),动态加载X轴(xAxis)
这个是开发经常遇到的,但是官方的示例都是死数据。。。怎样动态获取后台数据呢?
首先,不管你使用哪一种方式使用echarts,数据定义(option)部分都是相同的。我以折线图为例,首先定义option如下:呃,我顺便说一下各个定义项吧
- option = {
- title: {
- text: '实例'
- },
- tooltip : {
- trigger: 'axis'
- },
- legend: {
- data:[]
- },
- toolbox: {
- feature: {
- saveAsImage: {}
- }
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- xAxis : [
- {
- type : 'category',
- boundaryGap : false,
- data : []
- }
- ],
- yAxis : [
- {
- type : 'value'
- }
- ],
- series : []
- };
定义好option,下面就要获取数据动态加载到option中了
- jQuery.ajax({
- url:"url",
- type:'get',
- dataType:'json',
- success:function(jsons){
- var Item = function(){
- return {
- name:'',
- type:'line',
- itemStyle: {normal: {areaStyle: {type: 'default',opacity:isArea}}},
- label: {normal: {show: isShowAllData,position: 'top'}},
- markLine: {data: [{type: 'average', name: '平均值'}]},
- data:[]
- }
- };
- var legends = [];
- var Series = [];
- var json = jsons.data;
- for(var i=0;i < json.length;i++){
- var it = new Item();
- it.name = json[i].name;
- legends.push(json[i].name);
- it.data = json[i].data;
- Series.push(it);
- }
-
- option.xAxis[0].data = jsons.xcontent;
-
- option.legend.data = legends;
- option.series = Series;
- myChart.setOption(option);
- },
- error:function(){
- alert("数据加载失败!请检查数据链接是否正确");
- }
- });
以上就可完成图表数据的动态加载,现在整个页面应该是这样的
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>折线图</title>
- <script src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
- <script src="${pageContext.request.contextPath}/js/echarts.js"></script>
- </head>
- <body >
- <div align="center">
- <div id="main" style="width: 1000px;height:700px"></div>
- </div>
- <script src="${pageContext.request.contextPath}/source/echarts/myTheme.js"></script>
- <script type="text/javascript">
-
- var myChart = echarts.init(document.getElementById('main'),e_macarons);
- option = {
- title: { ··· },
- tooltip : { ··· },
- legend: { ··· },
- toolbox: { ··· },
- grid: { ··· },
- xAxis : [ ··· ],
- dataZoom: [ ··· ],
- yAxis : [ ··· ],
- series:[]
- };
-
- jQuery.ajax({
- url:"url",
- type:'get',
- dataType:'json',
- success:function(jsons){
- var Item = function(){
- return {
- name:'',
- type:'line',
- itemStyle: {normal: {areaStyle: {type: 'default',opacity:isArea}}},
- label: {normal: {show: isShowAllData,position: 'top'}},
- markLine: {data: [{type: 'average', name: '平均值'}]},
- data:[]
- }
- };
- var legends = [];
- var Series = [];
- var json = jsons.data;
- for(var i=0;i < json.length;i++){
- var it = new Item();
- it.name = json[i].name;
- legends.push(json[i].name);
- it.data = json[i].data;
- Series.push(it);
- }
-
- option.xAxis[0].data = jsons.xcontent;
- option.legend.data = legends;
- option.series = Series;
- myChart.setOption(option);
- },
- error:function(){
- alert("数据加载失败!请检查数据链接是否正确");
- }
- });
-
- myChart.setOption(option);
- </script>
- </body>
- </html>
附:后台数据返回
- @ResponseBody
- @RequestMapping("/jsonData")
- public Object jsonData(){
-
- Integer[] data1 = { 120, 132, 101, 134, -90, 230, 210};
- Integer[] data2 = { 20, 232, 11, -144, 90, 30, 90};
- Integer[] data3 = { 180, -12, 161, 84, 60, 230, -10};
-
- JsonData jd1 = new JsonData();
- jd1.setName("测试数据1");
- jd1.setData(data1);
-
- JsonData jd2 = new JsonData();
- jd2.setName("测试数据2");
- jd2.setData(data2);
-
- JsonData jd3 = new JsonData();
- jd3.setName("测试数据3");
- jd3.setData(data3);
-
- List<JsonData> data = new ArrayList<JsonData>();
- data.add(jd1);
- data.add(jd2);
- data.add(jd3);
-
- String[] xcontent = { "a","b","c","d","e","f","g"};
-
- TestlineData tld = new TestlineData();
- tld.setXcontent(xcontent);
- tld.setData(data);
- return tld;
- }
这个数据是一个三条折线,X轴7个项的折线图: