利用ECharts开发的步骤

  • 引入Echarts的相关库文件,以及自定义的js文件
<script src="${pageContext.request.contextPath}/js/echarts/source/echarts.js"></script>
    <script src="${pageContext.request.contextPath}/js/phoneSample.js"></script>
  • 定义图表的展示位置,建议使用bootstrap布局
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
         <ul id="myTab" class="nav nav-tabs">
             <li class="active"><a href="#iPhone" data-toggle="tab">iPhone</a></li>
             <li><a href="#SAMSUNG" data-toggle="tab">SAMSUNG</a></li>
             </ul>

          <div id="myTabContent" class="tab-content">
            <div class="tab-pane fade in active" id="iPhone">
                <div class="row placeholders" style="float:clear;">
                     <h2><strong>iPhone手机分析</strong></h2>
                </div>
                  <div class="row placeholders">
                  <div class="col-xs-6 col-sm-3 placeholder" id ="pie4All_iPhone" style="height:500px;width:650px">
                  </div>
                  <div class="col-xs-6 col-sm-3 placeholder" id ="bar_iPhone" style="height:500px;width:650px;float:left;">
                  </div>
                </div>
                <div class="row placeholders">
                  <div class="col-xs-6 col-sm-3 placeholder" id ="pie4Not_iPhone" style="height:500px;width:650px">
                  </div>
                </div>
            </div>
            <div class="tab-pane fade" id="SAMSUNG">
                  <div class="row placeholders" style="float:clear;">
                     <h2><strong>SAMSUNG手机分析</strong></h2>
                </div>
                  <div class="row placeholders">
                  <div class="col-xs-6 col-sm-3 placeholder" id ="pie4All_SAMSUNG" style="height:500px;width:650px">
                  </div>
                  <div class="col-xs-6 col-sm-3 placeholder" id ="bar_SAMSUNG" style="height:500px;width:650px;float:left;">
                  </div>
                </div>
                <div class="row placeholders">
                  <div class="col-xs-6 col-sm-3 placeholder" id ="pie4Not_SAMSUNG" style="height:500px;width:650px">
                  </div>
                </div>
            </div>
          </div>
         </div>
  • 编写phoneSample.js文件,处理图表数据(代码很简单,详见注释)
//封装饼状图参数
function setOptionPie(data){

    var legend_data = [];
    if(data && data.length > 0){

        $.each(data, function(idx, d){

            legend_data.push(d.name);
        });

    }

    var option = {
        title : {
            text: data.title || ‘‘,
            x:‘center‘
        },
        tooltip : {
            trigger: ‘item‘,
            formatter: "{b} : {c} ({d}%)"
        },
        legend: {
            orient : ‘vertical‘,
            x : ‘left‘,
            data:legend_data
        },
        calculable : true,
        series : [
            {
                type:‘pie‘,
                radius : ‘55%‘,
                center: [‘50%‘, ‘60%‘],
                data:data,
                itemStyle : {
                    normal : {
                        label : {
                            show: true,
                            position : ‘outer‘,
                            formatter : "{b}\n{d}%",//在饼状图上显示百分比
                            /*textStyle : {
                                color : ‘rgba(30,144,255,0.8)‘,
                                align : ‘center‘,
                                baseline : ‘middle‘,
                                fontFamily : ‘微软雅黑‘,
                                fontSize : 30,
                                fontWeight : ‘bolder‘
                            }*///自定义饼图上字体样式
                        },
                        labelLine : {
                            show : true,
                        }
                    },
                    emphasis : {
                        label : {
                            show : true,
                            formatter : "{d}%"//鼠标移动到饼状图上显示百分比
                        }
                    }

                }
            }
        ]
    };

    return option;
}

//封柱状状图参数
function setOptionBar(data){

    var legend_data = [];

    //var series = [];
    if(data && data.length > 0){

        $.each(data, function(idx, d){

            legend_data.push(d.name);
            //series.push({name:d.name,type:‘bar‘,itemStyle : { normal: {label : {show: true, position: ‘insideRight‘}}},data:d.data});
        });

    }

    /*var option = {
            tooltip : {
                trigger: ‘axis‘,
                axisPointer : {            // 坐标轴指示器,坐标轴触发有效
                    type : ‘shadow‘        // 默认为直线,可选为:‘line‘ | ‘shadow‘
                }
            },
            legend: {
                data:legend_data
            },
            calculable : true,
            xAxis : [
                {
                    type : ‘value‘
                }
            ],
            yAxis : [
                {
                    type : ‘category‘,
                    data : data && data[0] ? data[0].yAxis : []
                }
            ],
            series : series
        };
    return option;*/

    var option = {
            title : {
                text: data.title || ‘‘,
                x:‘center‘
            },
            tooltip : {
                trigger: ‘axis‘,
                axisPointer : {            // 坐标轴指示器,坐标轴触发有效
                    type : ‘shadow‘        // 默认为直线,可选为:‘line‘ | ‘shadow‘
                }
            },
            legend: {
                orient : ‘vertical‘,
                x : ‘left‘,
                data:legend_data
            },
            calculable : true,
            xAxis : [
                {
                    type : ‘value‘
                }
            ],
            yAxis : [
                {
                    type : ‘category‘,
                    data : data && data[0] ? data[0].yAxis : []
                }
            ],
            series : [
                {
                    name:legend_data[0],
                    type:‘bar‘,
                    stack: ‘总量‘,
                    itemStyle : { normal: {label : {show: true, position: ‘insideRight‘}}},
                    data:data[0].data
                },
                {
                    name:legend_data[1],
                    type:‘bar‘,
                    stack: ‘总量‘,
                    itemStyle : { normal: {label : {show: true, position: ‘insideRight‘}}},
                    data:data[1].data
                },
                {
                    name:legend_data[2],
                    type:‘bar‘,
                    stack: ‘总量‘,
                    itemStyle : { normal: {label : {show: true, position: ‘insideRight‘}}},
                    data:data[2].data
                }
            ]
        };
    return option;
}

//设置相关参数,展示图表
function showChart(data, type, phoneFlag) {
    require([ ‘echarts‘, ‘echarts/chart/‘+(type.substr(0,3) == ‘pie‘?‘pie‘:type) ], function(ec) {
        var myChart = ec.init(document.getElementById(type+‘_‘+phoneFlag));

        var option = null;

        if(type == ‘pie4All‘){
            data.title = "口碑现状";
            option = setOptionPie(data);
        }else if(type == ‘bar‘){
            data.title = "用户评价的分布现状";
            option = setOptionBar(data);
        }else if(type == ‘pie4Not‘){
            data.title = "负面信息属性分布状况";
            option = setOptionPie(data);
        }

        myChart.setOption(option);

        window.onresize = function () {
            myChart.resize();
        };

    });
}

// 请求后台数据,填充图表
function ajaxChart(phoneFlag, type) {

    $.ajax({
        type : "POST",
        dataType : "json",// 返回json格式的数据
        url : "../psServlet",
        data : {
            phoneFlag : phoneFlag,
            method: type
        },
        success : function(data) {

            if(data && data.length > 0){
                showChart(data, type, phoneFlag);
            }
        }
    });

}

$(function(){

    // 加载图表所需的js库文件
    require.config({
        paths: {
            echarts: path+‘/js/echarts/source‘
        }
    });

    ajaxChart("iPhone", "pie4All");
    ajaxChart("iPhone", "bar");
    ajaxChart("iPhone", "pie4Not");

    ajaxChart("SAMSUNG", "pie4All");
    ajaxChart("SAMSUNG", "bar");
    ajaxChart("SAMSUNG", "pie4Not");

});
  • 后续准备用面向对象的方式封装下,将图表展示和数据接口独立出来,方便其他项目引用
时间: 2025-01-31 18:41:41

利用ECharts开发的步骤的相关文章

angular的require模块开发部分步骤内容

angular利用require.js和nodejs的一个模块式开发部分步骤小结: 第一部分:Node.js的下载,npm的安装,http服务的使用 1.下载并安装 node.js 2.工作目录下写一个package.json文件内容:"scripts": {"start": "http-server -a 0.0.0.0 -p 8000",}-p 端口号 (默认 8080) -a IP 地址 (默认 0.0.0.0) 3.开始菜单搜索的地方,输

利用RTMFP开发P2P应用

利用RTMFP开发P2P应用 flash10使用RTMFP 开发点对点P2P应用 通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用 Adobe Flash Player 10 和 Adobe AIR 1.5 引入了一个新的通讯协议,Real-Time Media Flow Protocol (RTMFP),其低延迟,端到端的对等功能,安全性和可扩展性使它特别适合开发实时协作应用,不仅提供卓越的用户体验,而且运营商降低成本. 早 前的Flash Player

【高德API】如何利用MapKit开发全英文检索的iOS地图

原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的MapKit来展示全球英文底图,结合上高德API的中英文检索功能,就能打造POI数据最丰富,英文展示全方位的纯英文地图啦!看看截图,是不是浑然天成? ----------------------------------------------------------------------------

利用echarts展示旅行足迹

前言 一直有个环游世界的梦,周游列国,体验不同国家的人类文明,寻山访水,体验造物主大自然的伟大造化.毕竟人生不止眼前的苟且,还有诗和远方.这么多年以来,陆续走过了一些地方,每到一个地方,都让我离梦想又近了一些.虽然我知道这比起环游世界来说,还差不知道多少个山头,但是我一直在往这个梦努力,靠近.希望终有一天,我可以笑着对自己说,你做到了! 6年前,因为工作的原因,我接触过地图应用的开发,从那时起,我对地图的热爱就埋在了心底.今年年中我带爸妈旅了旅游,去了一些我没去过的地方,我好想有个地图可以让我点

银联云闪付开发联调步骤向导

一.开发前的准备工作(开发中务必将控件mode改为测试环境)1. 打开https://open.unionpay.com/,后续说的文档下载.FAQ查询等都在这个平台操作.2. 下载规范和开发包.帮助中心-下载-产品接口规范-手机控件支付产品接口规范,帮助中心-下载-产品接口规范-手机控件支付产品技术开发包.(ApplePay后台部分和控件产品相同,区别仅在于调起的控件不同.)3. 开发人员都请先看下6.2的消费的交易流程.4. 相关测试参数:如果已签约,有自己的测试商户,则直接用自己的商户号测

利用pushState开发无刷页面切换

利用pushState开发无刷页面切换<转> 相关文档:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulatingthebrowser_history 实现目标 页面的跳转(前进后退,点击等)不重新请求页面 页面URL与页面展现内容一致(符合人们对传统网页的认识) 在不支持的浏览器下降级成传统网页的方式 使用到的API history.state 当前URL下对应的状态信息.如果当前URL不是通过pushSta

利用 MUI开发app, 如何实现侧滑菜单及其主体部分上下滑动

 利用mui开发APP 之侧滑菜单主内容滚动问题 MUI作为开发者常用的框架之一,其号称最接近原生APP体验的高性能前端框架.因此利用mui开发移动APP,可以为开发者提供很大的便利和接近原生的体验.但是,在实现一些复杂功能的过程中,难免遇到一些小问题.博主将以自己在项目开发中的一些的经验,陆续对mui使用中容易遇到的小问题,予以解答和分享,希望能帮到更多的开发者朋友. 最近,博主在项目开发过程中遇到这样一个问题,即利用mui侧滑菜单模块,实现APP的侧滑菜单效果时,侧滑菜单加入以后,将影响自身

WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作.下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring + Hibernate; 1.首先集成Apacha CXF WebService 到 Spring 框架中; apache

struts开发的步骤

说来惭愧,这一个简单的struts折腾了好久,差不多花了三天多的时间才解决.下面我总结一下开发的步骤:(本人用的是MyEclipse); 1.新建一个Exercise3的web Project项目 2.配置web.xml文件 添加如下代码: <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepar