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>
posted @ 2017-08-10 17:48  AnswerTheQuestion  阅读(342)  评论(0编辑  收藏  举报