利用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"); });
- 后续准备用面向对象的方式封装下,将图表展示和数据接口独立出来,方便其他项目引用
利用ECharts开发的步骤的更多相关文章
- 移动端不利用HTML5和echarts开发一样可以实现大数据展示及炫酷统计系统(产品技术综合)
一.由于项目需要进行手机看板展示设计及开发展示效果图如下:
- 利用JAX-WS 开发web服务
近日在学习Rogers Candenhead的第六版的<Java 入门经典>第22章.利用JAX-WS 开发web服务,简略总结而言主要包括以下几个步骤: 1.定义服务端点接口类: 主要就 ...
- 利用WinDriver开发PCI设备驱动程序
摘要 WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发.作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果.从 ...
- 【高德API】如何利用MapKit开发全英文检索的iOS地图
原文:[高德API]如何利用MapKit开发全英文检索的iOS地图 制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧.告诉你,我有妙招!使用iOS自带的M ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- 利用RTMFP开发P2P应用
利用RTMFP开发P2P应用 flash10使用RTMFP 开发点对点P2P应用 通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用 Adobe Flash Pla ...
- 利用echarts展示旅行足迹
前言 一直有个环游世界的梦,周游列国,体验不同国家的人类文明,寻山访水,体验造物主大自然的伟大造化.毕竟人生不止眼前的苟且,还有诗和远方.这么多年以来,陆续走过了一些地方,每到一个地方,都让我离梦想又 ...
- Mac中如何搭建Vue项目并利用VSCode开发
(一)部署Node环境 (1)下载适合Mac环境的Node包,点击进入下载页面 (2)安装Node环境:找到下载好的Node包,这里是node-v12.14.1.pkg,我们双击它,会进入Node.j ...
- PyQt开发实战: 利用QToolBox开发的桌面工具箱
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 toolBox工具箱是一个容器部件,对应类为QToolBox,在其内有一列从上到下顺序排列 ...
随机推荐
- 亲测Google开源JPEG图片压缩算法,可将JPEG文件缩小%35
具体方法如下(windows 平台) GitHub上下载guetzli源码,地址https://github.com/google/guetzli GitHub上下载 vcpkg源码,地址https: ...
- box-sizing与calc()与flex
1,Syntax: /* Keyword values */ box-sizing: content-box; box-sizing: border-box; /* Global values */ ...
- 【BZOJ4379】[POI2015]Modernizacja autostrady 树形DP
[BZOJ4379][POI2015]Modernizacja autostrady Description 给定一棵无根树,边权都是1,请去掉一条边并加上一条新边,定义直径为最远的两个点的距离,请输 ...
- 【BZOJ4557】[JLoi2016]侦察守卫 树形DP
[BZOJ4557][JLoi2016]侦察守卫 Description 小R和B神正在玩一款游戏.这款游戏的地图由N个点和N-1条无向边组成,每条无向边连接两个点,且地图是连通的.换句话说,游戏的地 ...
- mac同时安装多个jdk
DK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7.因此,我需要在我的电脑上同时有JDK8,JD ...
- java上传图片,把图片存到本地
思路:js通过FileReader获取图片的Base64,Java解码用IO存到本地. HTML 代码 <input type="file" ng-model="f ...
- pycharm中配置Django运行环境(包括run manage.py task)
1.特别注意Environment variables(环境变量)的配置 DJANGO_SETTINGS_MODULE=(项目名).settings 如: DJANGO_SETTINGS_MODULE ...
- 阻塞IO、非阻塞IO、同步IO、异步IO等
https://www.cnblogs.com/zingp/p/6863170.html 阅读目录 1 基础知识回顾 2 I/O模式 3 事件驱动编程模型 4 select/poll/epoll的区别 ...
- django之contenttype
平时开发过程中,我们会经常遇到这么一个类似的场景,比如 不同的课程,有不同的价格策略 不同的课程可使用不同的优惠券(满减券,通用券,专用券) 不同的评论区,支持的评论 就拿 不同的课程,有不同的价格 ...
- Java 集合框架工具类
Collections Arrays Collections 集合框架的工具类, 里面的方法都是静态的, 可以直接使用类名调用 常用方法 1. sort(List<T> list); // ...