Echarts折线图和地图(个人总结)

Echarts折线图和地图(个人总结)

Echarts折线图和地图

ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

ECharts 功能

ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
本文只提供关于折线图的开发!如需更多服务请访问官网下载文档学习!
Echart官网:http://echarts.baidu.com/

开发前需要文件

1,js,json
jquery的应用js:jquery-1.11.2.min.js
echarts应用js:echarts.js
对应的地图js:china.js(中国地图),china.json(中国地图json)
world.js(世界地图)
continent_geo.json(世界大洲图)
具体文件可下载:
https://pan.baidu.com/s/1MZ2loAhU4ZwPfkjHclPuug
提取码:rn2t

开发结构

在这里插入图片描述
本人是建立一个Spring的简单项目来访问的,根据自己需要吧,主要的是js和页面的编写:
1,首先上js,和jsp
jsp引入js

jsp中放置一个容纳折线图的div

js中代码
var myChart = echarts.init(document.getElementById(‘zhe’));
option = {
title: {
text: “域名请求数统计图”, //正标题
link: “”, //正标题链接 点击可在新窗口中打开
x: “center”, //标题水平方向位置
subtext: “–”, //副标题
sublink: “”, //副标题链接
//正标题样式
textStyle: {
fontSize:20
},
//副标题样式
subtextStyle: {
fontSize:12,
color:“red”
}
},
tooltip: { //提示框组件

            trigger: 'axis'
        },
        legend: {     //图例组件
            data: ['域名请求数量'],//这里需要与series内的每一组数据的name值保持一致  
        	y:"bottom"  
        },
        grid: {       //直角坐标系内绘图网格
            left: '3%',
            right: '4%',
            bottom: '6%',//与下方的距离
            containLabel: true
        },
        //工具箱配置  
        toolbox: {  
           show : true,  
           feature : {  
               mark : {show: true}, // 辅助线标志,分别是启用,删除上一条,删除全部  
               dataView : {show: true, readOnly: true},// 数据视图,打开数据视图  
               magicType : {show: true, type: ['line', 'bar']},// 图表类型切换,当前仅支持直角系下的折线图、柱状图转换,分别是切换折线图,切换柱形图  
               restore : {show: true}, // 还原,复位原始图表,还原  
               saveAsImage : {show: true} // 保存为图片,保存  
           }  
       },  
       calculable: true, 
        //轴配置  
        xAxis: {       //直角坐标系 grid 中的 x 轴
            type: 'category',
            boundaryGap: false,//是否在表格的边缘显示    留不留距离
            axisTick: {
                alignWithLabel: true
            },
            axisLine:{
            	  	lineStyle:{
            	 	  color: '#5793f3',//颜色
            		  width:1,
            	  	}
            	 },
             axisPointer: {
                 label: {
                     formatter: function (params) {//显示的值
                         return params.value
                             + (params.seriesData.length ? ':' + params.seriesData[0].data : '');
                     }
                 }
             },
            data: []
        },
        //Y轴配置  
        yAxis: [  
                {  
                	axisLine:{
                	  	lineStyle:{
                	 	  color: '#5793f3',
                		  width:1,
                	  	}
                	 },
                    type: 'value',  
                    splitArea: { show: true }, //表格变色 
                    name:"数值"   //如果需要显示总记录数,则需要后台统计好传递到页面,再此显示就行  
                }  
            ], 
        
      //图表Series数据序列配置  
        series: [      //系列列表
            {
                name: '域名请求数量',
                type: 'line',
                smooth: false,//曲线还是直线
                itemStyle:{  //折线拐点的样式
                    normal:{
                        color:'#C23531',  //折线拐点的颜色
                        emphasis:0,
                    }
                },
                lineStyle:{  //线条的样式
                    normal:{
                        color:'#20aefc',  //折线颜色
                    }
                },
                areaStyle:{ //区域填充样式
                    normal:{
                        //线性渐变
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                            offset: 0, color: '#b1e3fe' // 0% 处的颜色
                        }, {
                            offset: 1, color: '#fff' // 100% 处的颜色
                        }], false)
                    }
                },
                showAllSymbol: false,//是否显示数据的所有转折点  
                data: []
            }

        ]
    };

/调用option生成图表/
myChart.setOption(option)
myChart.hideLoading();
function getChartData(time) {

   var  domainName =$("#domainName").val();
   //获得图表的options对象  
   var options = myChart.getOption();  
   $("#zhe").css('display','block');
   //设置副标题  根据所选的日期跨度   显示
   var subtext='';
   if(time== 'q') subtext='近一季度';
   if(time== 'month') subtext='近一个月';
   if(time== '7day') subtext='近一周';
   if(time== '1day') subtext='近一天';
   options.title[0].subtext =subtext ;  
   //通过Ajax获取数据  
   $.ajax({  
       type : 'post',  
       async : false, //同步执行  
       url : '<%=basePath%>zheajax',  
       data :{'domainName':domainName,'time':time},//参数(根据实际情况增减)
       dataType : 'json', 
       success : function(data) { 
    	   console.log(data[0]);
           if (data[0].flag=='true') {  
               options.legend.data =data[0].legend;  
               	//将返回的字符串转化成为数组形式的数据
               var asis=changestring(data[0].category);
               var series=changestring(data[0].series);
               //设置数据和x坐标
               options.xAxis[0].data =asis ;  
               options.series[0].data =series ;  

               myChart.hideLoading();  
               myChart.setOption(options);
           }else{
        	   alert('没有数据');
           } 
       },  
       error : function(errorMsg) {  
           alert('不好意思,图表请求数据失败!');  
           myChart.hideLoading();  
       }  
   });   

}
function changestring(objStr){
var str=objStr.substring(1,objStr.length-1);
//将返回的字符串转化成为数组形式的数据
var array=str.split(",");
return array;
}
2,后台
就是讲折线图需要的X坐标和y坐标的数据分别放置到map中,
最后通过json返回页面即可
jsonMap.put(“category”,"""+timeStr+"""); X坐标
jsonMap.put(“series”,"""+valueStr+"""); Y坐标
try {
response.setHeader(“P3P”, “CP=“CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR””);
response.setContentType(“application/json;charset=utf-8”);
PrintWriter out = response.getWriter();
System.out.println(JSONArray.fromObject(jsonMap).toString());
out.write(JSONArray.fromObject(jsonMap).toString());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}

有需要源码的可以联系我!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值