• 引入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"); });
  • 后续准备用面向对象的方式封装下,将图表展示和数据接口独立出来,方便其他项目引用

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

  1. 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)

    一.由于项目需要进行手机看板展示设计及开发展示效果图如下:

  2. 利用JAX-WS 开发web服务

    近日在学习Rogers Candenhead的第六版的<Java 入门经典>第22章.利用JAX-WS 开发web服务,简略总结而言主要包括以下几个步骤: 1.定义服务端点接口类: 主要就 ...

  3. 利用WinDriver开发PCI设备驱动程序

    摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发.作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果.从 ...

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

    原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的M ...

  5. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  6. 利用RTMFP开发P2P应用

    利用RTMFP开发P2P应用 flash10使用RTMFP 开发点对点P2P应用 通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用 Adobe Flash Pla ...

  7. 利用echarts展示旅行足迹

    前言 一直有个环游世界的梦,周游列国,体验不同国家的人类文明,寻山访水,体验造物主大自然的伟大造化.毕竟人生不止眼前的苟且,还有诗和远方.这么多年以来,陆续走过了一些地方,每到一个地方,都让我离梦想又 ...

  8. Mac中如何搭建Vue项目并利用VSCode开发

    (一)部署Node环境 (1)下载适合Mac环境的Node包,点击进入下载页面 (2)安装Node环境:找到下载好的Node包,这里是node-v12.14.1.pkg,我们双击它,会进入Node.j ...

  9. PyQt开发实战: 利用QToolBox开发的桌面工具箱

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 toolBox工具箱是一个容器部件,对应类为QToolBox,在其内有一列从上到下顺序排列 ...

随机推荐

  1. 做好准备,让你的短信应用迎接Android 4.4(KitKat)

    Android团队通过Android开发博客透漏今年会放出Android 4.4 (KitKat) ,同时更新了 SMS 的部分API.博客上讲只有default SMS app才能对短信数据库有写权 ...

  2. 【BZOJ4108】[Wf2015]Catering 有上下界费用流

    [BZOJ4108][Wf2015]Catering Description 有一家装备出租公司收到了按照时间顺序排列的n个请求. 这家公司有k个搬运工.每个搬运工可以搬着一套装备按时间顺序去满足一些 ...

  3. 【BZOJ4566】[Haoi2016]找相同字符 后缀数组+单调栈

    [BZOJ4566][Haoi2016]找相同字符 Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两 个子串中有一个位置不同 ...

  4. zookeeper 事务日志与快照日志

    zookeeper日志各类日志简介 zookeeper服务器会产生三类日志:事务日志.快照日志和log4j日志. 在zookeeper默认配置文件zoo.cfg(可以修改文件名)中有一个配置项data ...

  5. Django 中的自定义分页标签

    目录结构: 1.在应用下,migrations的同级目录创建templatetags目录(主要两个文件,包含__init__.py) 2.创建分页标签(pagetag.py) #!/usr/bin/e ...

  6. 网络编程4 网络编程之FTP上传简单示例&socketserver介绍&验证合法性连接

    今日大纲: 1.FTP上传简单示例(详细代码) 2.socketserver简单示例&源码介绍 3.验证合法性连接//[秘钥加密(urandom,sendall)(注意:中文的!不能用)] 内 ...

  7. Storm-源码分析- spout (backtype.storm.spout)

    1. ISpout接口 ISpout作为实现spout的核心interface, spout负责feeding message, 并且track这些message. 如果需要Spout track发出 ...

  8. 转!!xss漏洞

    参考资料 https://blog.csdn.net/jiangzhexi/article/details/56841793 http://www.freebuf.com/articles/web/4 ...

  9. MongoDB-1:安装和配置

    一.简介 MongoDB一种非关系型数据库(NoSql),是一种强大.灵活.可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量.高并发.弱事务 ...

  10. Django--Web应用介绍/http协议