Echarts图表

近期做报表时用到了Echarts图表,因为从前只用过JfreeChart,两者一比较感觉百度做的确实厉害,功能很强大,要是很多。

最近主要用到了,柱状图,折线图,混合图,南丁格尔玫瑰图,桑基图。

有兴趣可以到其官网看,上面讲的非常详细。http://echarts.baidu.com/index.html;

官网API地址:http://echarts.baidu.com/option.html#title

1.柱状图,折线图,混合图

下面代码是实际项目中的用法,具体属性就不多说了,到上面网址去看。最主要的就是数据格式。

图例:data:[‘蒸发量‘,‘降水量‘,‘平均温度‘];

默认图例显示:selected:[‘平均温度‘:false];

后台查询字段:data:[‘1月‘,‘2月‘,‘3月‘,‘4月‘,‘5月‘,‘6月‘,‘7月‘,‘8月‘,‘9月‘,‘10月‘,‘11月‘,‘12月‘];

数据:series:

[

{
name:‘蒸发量‘,
type:‘bar‘,
data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
},
{
name:‘降水量‘,
type:‘bar‘,
data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
},
{
name:‘平均温度‘,
type:‘line‘,
yAxisIndex: 1,
data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]

其实我建议大家到官网看看文档,我这也是粗略写一下,因为用的少,以后自己看的时候有地方找,主要还是上面的网址管用。。。

/**charts图*/
function charts(id,url,ny,jgdmQL){
    $("#chart_"+id).html("");
    var str=checkValue(id);
    var startDate=$("#startYear").val()+$("#startMonth").val();
    var endDate=$("#endYear").val()+$("#endMonth").val();
    var myChart = echarts.init(document.getElementById("chart_"+id));
    myChart.showLoading({text:"图表数据正在努力加载..."});
    $.post(url,{"str":str,"startDate":startDate,"endDate":endDate,"ny":ny,"jgdmQL":jgdmQL},function(result){
        var tuLi=eval("("+result.tuLi+")");
        var moRen=eval("("+result.moRen+")");
        var nm=eval("("+result.nm+")");
        var da=eval("("+result.chart+")");
        var option = {
                tooltip: {
                    trigger: ‘axis‘
                },
                toolbox:{
                    show:true,
                    feature:{
                        saveAsImage:{
                            show:true
                        },
                        dataView:{
                            show:true,
                            readOnly:false
                        },
                        restore:{
                            show:true
                        },
                        magicType:{
                            show:true,
                            type:["line","bar"]
                        }
                    }
                },
                legend: {
                    data:tuLi,//动态图例
                    selected:moRen//初始图例是否显示
                },
                grid:{
                      y:165
                  },
                xAxis: [
                    {
                        type: ‘category‘,
                        axisLabel:{
                            interval:0,
                            rotate:20
                        },
                        data: nm//后台查询字段对象
                    }
                ],
                yAxis: [
                    {
                        type: ‘value‘,
                        name: ‘金额/万元‘,
                        axisLabel: {
                            formatter: ‘{value}‘
                        }
                    },
                    {
                        type: ‘value‘,
                        name: ‘增幅/%‘,
                        axisLabel: {
                            formatter: ‘{value}‘
                        }
                    },
                ],
                series: da//数据
        };
        myChart.setOption(option);
        myChart.hideLoading();
    },"json")
}    

2.桑基图。这个图就有点麻烦,其描述的是,从初始状态至最终形态的变化过程。

name是节点,links是变化过程。

{ target: ‘张店‘,source: ‘淄_博_增_长_比_%‘,value:10}:表示:张店有10变为了淄_博_增_长_比_%

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>桑基图</title>
  <%@include file="../public.jsp"%>
  <script type="text/javascript" src="../../js/charts/charts.common.extend.js"></script>
  <script type="text/javascript">
  function format(v){  // 格式化矩形框内显示的文字,如需要换行矩形框内的数据name节点需要添加下滑线_,如桑_基_图,这种格式的文字才可以垂直显示
         var name = v.name;
         if(name.indexOf(‘_‘) > -1){
            var str = ‘‘;
            var strArr = name.split(‘_‘);
            for (var i = 0; i < strArr.length;i++) {
               str += strArr[i] + ‘\n‘;
            }
            return str;
         }
    }

    function toolTipformat(v){ // 转化工具提示栏中的文字,默认写法无需修改
        alert(v);
         var name = v.name;
        if(name.indexOf(‘_‘) > -1){
           var str = ‘‘;
           var strArr = name.split(‘_‘);
           for (var i = 0; i < strArr.length;i++) {
              str += strArr[i];
           }
           return str;
        }else{
            return v.name;
        }
    }
          $(function(){
              var option = {
                     title: {
                       text: ‘‘
                },
                tooltip: {
                     trigger: ‘item‘,
                     triggerOn: ‘mousemove‘
                 },
                 series: [
                        {
                        type: ‘sankey‘,
                        width:‘40%‘,
                        nodeWidth:50,
                        data:[{
                            name:‘淄_博_收_入_额‘,
                            value:0,
                            label:{//该矩形节点中文本标签的样式
                                 normal:{//常规样式
                                    textStyle:{fontSize:16,color:‘black‘,fontWeight:‘bold‘}
                                }/*,
                               emphasis:{//着重突出的样式
                                    textStyle:{
                                       fontSize:16,
                                       color:‘black‘,
                                        fontWeight:‘bold‘
                                    }
                               }*/
                         },
                         itemStyle:{//矩形节点的样式
                             normal:{shadowColor:‘#FF9900‘,color:‘#FF9900‘}
                         }
                        },
                      {name: ‘张店‘,value: 10,label:{normal:{position: ‘insideRight‘}}},
                      {name: ‘临淄‘,value: 20,label:{normal:{position: ‘insideRight‘}}},
                      {name: ‘博山‘, value: 20,label:{normal:{position: ‘insideRight‘}}},
                      {name: ‘周村‘,value: 10,label:{normal:{position: ‘insideRight‘}}}],
                        links:[{ source: ‘张店‘,target: ‘淄_博_收_入_额‘,value:10}, {source: ‘临淄‘,target: ‘淄_博_收_入_额‘,value:20},
                             { source: ‘博山‘, target: ‘淄_博_收_入_额‘,value:20}, {source: ‘周村‘,target: ‘淄_博_收_入_额‘,value:10}],
              label:{//描述每个矩形节点中文本的样式
                       normal:{
                          position: ‘inside‘,//在矩形节点内部
                          formatter:function(v){
                            return format(v)
                        }
                     }

                },
            itemStyle: {//描述每个矩形节点的样式
                normal: {//常规的
                    opacity: 0.6,
                    color:‘#FFFF00‘,
                    borderWidth: 0,
                    shadowColor:‘#FFFF00‘
                }
            },
            lineStyle: {//矩形节点之间连线的样式
                normal: {
                    opacity:0.6,
                    color:‘#FFFF00‘,
                    shadowColor:‘#FFFF00‘
                }
            },
            tooltip:{//本系列特定的提示信息
               formatter:function(v){
                            return toolTipformat(v);
                        }
                }
            },
            {
                  type: ‘sankey‘,
                  width:‘40%‘,
                  left:‘46%‘,
                  nodeWidth:50,
                  data:[{
                      name:‘淄_博_增_长_比_%‘,
                      value:0,
                      label:{//该矩形节点中文本标签的样式
                           normal:{//常规样式
                              textStyle:{fontSize:16,color:‘black‘,fontWeight:‘bold‘}
                          }/*,
                         emphasis:{//着重突出的样式
                              textStyle:{
                                 fontSize:16,
                                 color:‘black‘,
                                  fontWeight:‘bold‘
                              }
                         }*/
                   },
                   itemStyle:{//矩形节点的样式
                       normal:{shadowColor:‘#009900‘,color:‘#009900‘}
                   }
                  },
                {name: ‘张店‘,value: 10,label:{normal:{position: ‘insideLeft‘}}},
                {name: ‘临淄‘,value: 20,label:{normal:{position: ‘insideLeft‘}}},
                {name: ‘博山‘, value: 20,label:{normal:{position: ‘insideLeft‘}}},
                {name: ‘周村‘,value: 10,label:{normal:{position: ‘insideLeft‘}}}],
                  links:[{ target: ‘张店‘,source: ‘淄_博_增_长_比_%‘,value:10}, {target: ‘临淄‘,source: ‘淄_博_增_长_比_%‘,value:20},
                       { target: ‘博山‘, source: ‘淄_博_增_长_比_%‘,value:20}, {target: ‘周村‘,source: ‘淄_博_增_长_比_%‘,value:10}],
        label:{//描述每个矩形节点中文本的样式
                 normal:{
                    position: ‘inside‘,//在矩形节点内部
                    formatter:function(v){
                      return format(v)
                  }
               }

          },
      itemStyle: {//描述每个矩形节点的样式
          normal: {//常规的
              opacity: 0.6,
              color:‘#00FF00‘,
              borderWidth: 0,
              shadowColor:‘#00FF00‘
          }
      },
      lineStyle: {//矩形节点之间连线的样式
          normal: {
              opacity:0.6,
              color:‘#00FF00‘,
              shadowColor:‘#00FF00‘
          }
      },
      tooltip:{//本系列特定的提示信息
         formatter:function(v){
                      return toolTipformat(v);
                  }
          }
      }
                ]
           };
              var myChart = echarts.init(document.getElementById("aa"));
            myChart.setOption(option);
          })
  </script>    

  </head>
  <body>
    <div id="aa" style="width: 100%;height: 100%"></div>
  </body>
</html>
时间: 2024-11-05 22:34:59

Echarts图表的相关文章

HTML在表格中添加echarts图表

在HTML的table中,只要将需要插入echarts图表的格子设定为明确的宽高(不能为百分比),并赋予一个id,就可以插入echarts图表. 如示例所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts</title> <!-- 引入 echarts.js --> <script type="te

***ECharts图表入门和最佳实践

ECharts数据图表系统? 5分钟上手! [ECharts简介] ECharts开源来自百度商业前端数据可视化团队,基于html5 Canvas,是一个纯Javascript图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力. 支持折线图(区域图).柱状图(条状图).散点图(气泡图).K线图.饼图(环形图).雷达图(填充雷达图).和弦图.力导向布局图.地图.仪 表盘.漏斗图.事件河流图

二、第一个ECharts图表

1 <!DOCTYPE html> 2 <head> 3 <meta charset="utf-8"> 4 <title>ECharts</title> 5 </head> 6 <body> 7 <!-- 为ECharts准备一个具备大小(宽高)的Dom --> 8 <div id="main" style="height:400px">&

ECharts-Java使用Java快速开发ECharts图表

ECharts-Java类库地址:http://git.oschina.net/free/ECharts 百度ECharts地址:http://echarts.baidu.com/ 大概在5个月前的时候,有个项目需要用到图表,百度ECharts很不错,就选择了ECharts. 我的项目是SpringMVC + Mybatis,当从数据库获取数据后,我不知道该如何处理这些数据了,是传到前台拼ECharts的Option结构还是在后台拼Option的JSON结构? 两种方式我都尝试了: 第一种在前台

ECharts 图表设置标记的大小 symbolSize 和获取标记的值

ECharts 是百度出品,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表. 慕课网 http://www.imooc.com/learn/687 上有学习视频,可快速上手. 公司之前开发的 webapp 中有用到 ECharts 图表,可是在两个问题上一直解决

echarts之bootstrap选项卡不能显示其他标签echarts图表

在echarts跟bootstrap选项卡整合的时候,默认第一个选中选项卡可以正常加载echarts图表,但是切换其他选项的时候不能渲染出其他选项卡echarts图表. 解决方法: 在js中添加代码: var myChart = echarts.init(document.getElementById('graph')); $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { myChart.resize(); });

转:ECharts图表组件之简单关系图:如何轻松实现另类站点地图且扩展节点属性实现点击节点页面跳转

站点地图不外乎就是罗列一个网站的层次结构,提炼地讲就是一个关系结构图.那么我们如何巧用ECharts图表组件内的简单关系结构图来实现一个站点的地图结构呢?另外如何点击某个节点的时候实现页面跳转呢? 针对上述所提出的疑问,我琢磨了一下ECharts图表组件.找到官方这样的一个适合的简单关系图:http://echarts.baidu.com/doc/example/force1.html 通过观察ECharts图表组件的简单关系图的数据结构,得出我要实现一个站点地图需要做哪些工作: 1.引入ech

转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

一.什么是ECharts图表的皮肤(主题)? 针对这个问题我只能这样回答,ECharts图表的主题(皮肤)就犹如人的衣服一样,是用来衬托和渲染主体,使其变得更加美观好看的目的.你去过ECharts图表组件的官网应该都看到每一个示例都支持皮肤切换的.我们更深入的理解,皮肤其实就是一些样式的定义集合. 图表有很多部分组成,比如:标题.坐标轴.Series数据.Legend图例等.每一个部分我们可以为其设置style样式,形如:字体颜色.字体大小.旋转角度.背景图片.背景颜色.是否渐变等. 二.如何将

vue table中使用多选的问题(翻页后如何保存已选项),联动echarts图表实现流量监控

流量监控项目需求: 根据表格数据,添加多选功能,默认全选,根据已选项更新图表视图 1.表格需要多选 2.要联动图表,所以关键是要利用表格多选的触发回调函数 vue table中使用多选: 很简单,只需要在table中增开一项,type定义为selection即可: 如何默认列表全选呢? 先关联table: 数据加载完成以后,获取列表数据长度,手动循环切换状态(toggleRowSelection是关键,通过这个方法来触发echarts的刷新): OK,现在可以实现默认全选状态了: 如何与echa