一、效果图
二、代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head style="height: 100%">
<script type="text/javascript" src="./js/echarts.min.js"></script>
<!-- 引入jquery.js -->
<script type="text/javascript" src="./js/jquery.js"></script>
<meta charset="utf-8"/>
</head>
<body>
<!-- 准备Echarts图表画布 -->
<div style="height:410px;min-height:100px;margin:0 auto;" id="main"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 画图表空出数据等待ajax传值
myChart.setOption({
title: { //图表标题
text: ''
},
tooltip: {
trigger: 'axis', //坐标轴触发提示框,多用于柱状、折线图中
axisPointer: {
type: 'cross'//十字指示
}
},
axisPointer: {
link: [{
xAxisIndex: [0, 1] //生成大十字轴,控制两个x轴
}]
},
grid: [{ //图形间距
left: '5%',
right: 20,
top: 40,
height: 180
}, {
left: '5%',
right: 20,
height: 80,
top: 260
}],
dataZoom: [ //滚动条 控制两条x轴
{
type: 'inside',
top: '95%',
xAxisIndex:[0,1],
height: 20,
start: 20,
end: 100
} ,
{
type: 'slider',
xAxisIndex:[0,1],
start: 20,
end: 100
}
],
legend: { //图表上方的类别显示
show:true,
data:['现价','成交量']
},
color:[
'#FF3333',
'#53FF53',
'#B15BFF',
'#68CFE8',
'#FFDC35'
],
toolbox: { //工具栏显示
show: true,
feature: {
saveAsImage: {} //显示“另存为图片”工具
}
},
calculable : true,
xAxis: [{
type: 'category',
data: [],
scale: true,
boundaryGap: false,
axisLine: { onZero: false },
splitLine: { show: false },
splitNumber: 20,
min: 'dataMin',
max: 'dataMax'
},{
type: 'category',
scale: true,
gridIndex:1,
data: [] ,
axisLabel: {show: false}
}
],
yAxis : [
{
scale: true, //数据居中
splitArea: {
show: true
},
type : 'value',
name : '现价',
splitNumber:10,//分行
axisLabel : {
formatter: '{value}元' //控制输出格式
}
},{ scale: true, //数据居中
splitArea: {
show: true
},
gridIndex:1,
splitNumber: 2 ,
axisLine: {onZero: false},
axisTick: {show: false},
splitLine: {show: false},
axisLabel: {show: true}
}
],
series : [ //系列(内容)列表
{
name:'现价',
type:'line', //折线图表示
symbol:'emptycircle', //设置折线图中表示每个坐标点的符号;emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
data:[] //数据值通过Ajax动态获取
},
{
name:'成交量',
type:'bar',
xAxisIndex:1,
yAxisIndex:1,
barWidth: 10,
itemStyle: {
},
symbol:'emptyrect',
data:[]
}
]
});
myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画
var lastpx=[]; //现价数组
var trade_vol=[]; //成交量数组
var time=[]; //时间数组
$.ajax({ //使用JQuery内置的Ajax方法
type : "post", //post请求方式
async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
url : "tbl_market.do?method=getAll", //请求发送到ShowInfoIndexServlet处
// data : {name:"A0001"}, //请求内包含一个key为name,value为A0001的参数;服务器接收到客户端请求时通过request.getParameter方法获取该参数值
dataType : "json", //返回数据形式为json
success : function(result) {
//请求成功时执行该函数内容,result即为服务器返回的json对象
if (result != null && result.length > 0) {
for(var i=0;i<result.length;i++){
lastpx.push(result[i].lastpx); //挨个取出
trade_vol.push(result[i].trade_vol);
time.push(result[i].time);
}
myChart.hideLoading(); //隐藏加载动画
myChart.setOption({ //载入数据
xAxis: [{
data: time //填入X轴数据
},{
data: time //填入X轴数据
}],
series: [ //填入系列(内容)数据
{
// 根据名字对应到相应的系列
name: '现价',
data: lastpx
},
{
name: '成交量',
data: trade_vol
}
]
});
}
else {
//返回的数据为空时显示提示信息
alert("图表请求数据为空,可能服务器暂未录入数据,您可以稍后再试!");
myChart.hideLoading();
}
},
error : function(errorMsg) {
//请求失败时执行该函数
alert("图表请求数据失败,可能是服务器开小差了");
myChart.hideLoading();
}
}),
myChart.setOption(option); //载入图表
</script>
</body>
</html>