echarts折线图使用

[@TOC]

0.效果,点击数据信息实现弹窗

在这里插入图片描述

在这里插入图片描述

1.引入css

<script language="javascript" src="https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js"></script>

2.准备一个DOM

<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
 <div id="lineChart" style="width: 100%;height:90%;"></div>

3.编写js

3.1 准备数组,存放x轴和待显示的折线

var txs = new Array(); //x轴
var series1 = new Array();
var series2 = new Array();
var series3 = new Array();

3.2 给数组赋值

<%
	long sj_date = LongCalendar.getLongCalendar();
    	for(int i = 0; i<listSJC.size(); i++){
    	    Map map = (Map)  listSJC.get(i);
			String x = (String)map.get("SJ_HH");
			String max_sjc = (String)map.get("MAX_SJC");
			String min_sjc = (String)map.get("MIN_SJC");
			String avg_sjc = (String)map.get("AVG_SJC");
    	%>
    	    
			txs[<%=i%>] = "<%=x%>";    //类别数组(实际用来盛放X轴坐标值)    
			series1[<%=i%>] = <%=max_sjc%>;
			series2[<%=i%>] = <%=min_sjc%>;
			series3[<%=i%>] = <%=avg_sjc%>;
    	<%
    	}
    	%>
    

3.3 基于准备好的dom,初始化echarts实例

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('lineChart'));
// 指定图表的配置项和数据
myChart.setOption ({
    title: {
        text: '响应统计'  //图标的名字
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data:['最大值','最小值','平均值']  //三条折线的名字
    },
    toolbox: {  
        show: true,  //是否显示右上角的视图转换
        feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            magicType: { show: true, type: ['line', 'bar'] },  //line 折线图;bar 柱状图
            restore: { show: true }  //还原初始的视图类型
        }
    },
    calculable: true,
    xAxis: {
        type: 'category',
        boundaryGap: false, //取消左侧的间距
        data: txs  //x轴数据
    },
    yAxis: {
        type: 'value',
        name: ''
    },
    series: [{
        name: '最大值',  //跟上面折线图的名字相同
        type: 'line',
        symbol: 'emptycircle',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
        data: series1

    },
             {
                 name: '最小值',
                 type: 'line',
                 symbol: 'emptyrect',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
                 data: series2
             },
             {
                 name: '平均值',
                 type: 'line',
                 symbol: 'emptydiamond',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
                 data: series3
             }]
});

//myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画

// 使用刚指定的配置项和数据显示图表。
myChart.setOption({
    xAxis: {
        data: txs 
    },
    series: [{                    
        data: series1  //最大值
    },
             {
                 data: series2 //最小值
             },
             {
                 data: series3 //平均值
             }]
});

3.4 点击数据触发事件

//点击数据触发事件
myChart.on('click', function(params){
    var sj_HH = params.name;  //x轴值
    var sj_date = <%=jssj%>;
    openDialog({
        url:"<%= application.getAttribute("MISRoot")%>/HTTPController?RequestID=<%=secretCoder.encodeStr("DF_SSGL_MRDZ_listFzxx")%>"+"&HH="+sj_HH+"&date="+sj_date,
        title:"数据详细信息",
        width:"90%",
        height:"80%"
 }); 

3.5 代码整合

<script type="text/javascript">
    	var txs = new Array(); //x轴
    	var series1 = new Array();
	    var series2 = new Array();
	    var series3 = new Array();
    	
    	<%
	long sj_date = LongCalendar.getLongCalendar();
    	for(int i = 0; i<listSJC.size(); i++){
    	    Map map = (Map)  listSJC.get(i);
			String x = (String)map.get("SJ_HH");
			String max_sjc = (String)map.get("MAX_SJC");
			String min_sjc = (String)map.get("MIN_SJC");
			String avg_sjc = (String)map.get("AVG_SJC");
    	%>
    	    
			txs[<%=i%>] = "<%=x%>";    //类别数组(实际用来盛放X轴坐标值)    
			series1[<%=i%>] = <%=max_sjc%>;
			series2[<%=i%>] = <%=min_sjc%>;
			series3[<%=i%>] = <%=avg_sjc%>;
    	<%
    	}
    	%>
    
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('lineChart'));
        // 指定图表的配置项和数据
        myChart.setOption ({
            title: {
                text: '响应统计'
            },
            tooltip: {
				trigger: 'axis'
			},
            legend: {
                data:['最大值','最小值','平均值']
            },
		    toolbox: {
				show: true,
				feature: {
					mark: { show: true },
					dataView: { show: true, readOnly: false },
					magicType: { show: true, type: ['line', 'bar'] },
					restore: { show: true }
				}
			},
			calculable: true,
            xAxis: {
				type: 'category',
				boundaryGap: false, //取消左侧的间距
                data: txs
            },
            yAxis: {
				type: 'value',
				name: ''
			},
            series: [{
                name: '最大值',
                type: 'line',
				symbol: 'emptycircle',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
				data: series1
                
            },
			{
                name: '最小值',
                type: 'line',
                symbol: 'emptyrect',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
				data: series2
            },
			{
                name: '平均值',
                type: 'line',
                symbol: 'emptydiamond',    //设置折线图中表示每个坐标点的符号 emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形
				data: series3
            }]
        });
		
	//myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画
		
 
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption({
		       xAxis: {
                    data: txs
                },
                series: [{                    
                    data: series1
                },
                {
                    data: series2
                },
                {
                    data: series3
                }]
		});
		//点击数据触发事件
		myChart.on('click', function(params){
			var sj_HH = params.name;  //x轴值
			var sj_date = <%=jssj%>;
			openDialog({
				url:"<%= application.getAttribute("MISRoot")%>/HTTPController?RequestID=<%=secretCoder.encodeStr("DF_SSGL_MRDZ_listFzxx")%>"+"&HH="+sj_HH+"&date="+sj_date,
				title:"数据详细信息",
				width:"90%",
				height:"80%"
	        }); 
			
		})
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值