java基础写一个折线图html页面(前后端关联)

11 篇文章 0 订阅

今天有一个学弟问我怎么关联折线图的问题,写一遍基础的文章来讲解一下

 xml方法我这里是两个数量和一个年份的日期,具体的内容可以根据你的具体情况来应用

   <select id="jgEcharstList" resultType="com.inspur.zhongtie.gongchengbu.jienenghuanbao.po.Jienenghuanbao" >

select  COUNT(JH_TIME)  SETT1,COUNT(SJ_TIME)  SETT2,YUE
    from ZT_GCLY_JNHB_JNJP  A
    where substr(A.NIAN, 1, 4) = #{year}
GROUP BY  YUE
    order by YUE asc
</select>

 service这里说一下是因为我的字段的类型原因我需要处理一下写了个for循环,感兴趣的同学可以看一下这几个for循环对于以后的代码理解也是有帮助的,我这里是先取出月份然后在通过判断1-9月和9月以上的数据来进行一个拼接,拼接完成后吧数据一起再经过for循环进行一个组合拼接,我这里没有写一个备注

  public List<Jienenghuanbao> jgEcharstList(String year) {
        List<Jienenghuanbao> list1  = this.JienenghuanbaoDao.selectList("com.inspur.zhongtie.gongchenglvyue.Jienenghuanbao.jgEcharstList",year);
        List<String> month = new ArrayList<>();
        for (int i = 1; i<13; i++){
            String yuefen;
            if (i<10){
                yuefen = year+"-0"+i;
            }else{
                yuefen = year+"-"+i;
            }
            month.add(yuefen);

        }

        for (Jienenghuanbao bean : list1){
           String i = bean.getYUE();
                String dataMonth;
                if (Integer.parseInt(i)<10){
                    dataMonth = year+"-0"+i;
                }else{
                    dataMonth = year+"-"+i;
                }
                bean.setYUE(dataMonth);
        }

        List<Jienenghuanbao> list2 = new ArrayList<>();
        for (String s : month) {
            Jienenghuanbao echartsP= new Jienenghuanbao();
            echartsP.setYUE(s);
            echartsP.setSETT1("0");
            echartsP.setSETT2("0");
            list2.add(echartsP);
        }
        System.out.println(list1);
        System.out.println(list2);
        for(Jienenghuanbao bean1 : list1){
            for(Jienenghuanbao bean2 : list2){
                if (bean1.getYUE().equals(bean2.getYUE())){
                    bean2.setSETT1(bean1.getSETT1());
                    bean2.setSETT2(bean1.getSETT2());
                }
            }
        }
        return  list2;

    }

controller

  /**
     *
     *   图表
     *
     */
    @RequestMapping("/echartsQuery")
    @ResponseBody
    public List<Jienenghuanbao> jgEchartsQuery(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
        String year = this.getPara("year");
        return this.JienenghuanbaoService.jgEcharstList(year);
    }

html


	echarst();

	/**
	 * 折线图
	 */
	function echarst() {

		var RenderBarChart = echarts.init(document.getElementById('BrokenLineCharts'));

		var type1 = [];
		var type2 = [];
		var month = [];
		var year = $('#years').val();
		// var acfr;
		// RenderBarChart.showLoading();
		$.ajax({
			url: '${root!}/Jienenghuanbao/echartsQuery',//地址
			type: 'post',//类型
			data: {
				year: year,
			},
			async: false,
			success: function (result) {
                 console.log(result);

				for (var i in result) {
					month.push(result[i].yue);
					type1.push(result[i].sett1);
					type2.push(result[i].sett2);
				}


				//图表静态
				var option = {
					title: {
						text: year + '节能减排措施数据统计曲线图',
						// subtext: '数据来自西安兰特水电测控技术有限公司',
						left: 'center',
						align: 'right',
						top: '20'
					},
					tooltip: {
						trigger: 'axis',
						position: function (pt) {
							return [pt[0], '14%'];
						}
					},
					legend: {
						icon: 'rectangle',
						data: ['计划完成', '实际时间'],
						x: 'left',
						right: '48%',
						top: '20',
						itemWidth: 18,
						itemHeight: 10,
						padding: [0, 0, 0, 20],
						itemHeight: 10,
						textStyle: {
							fontSize: 12,
							color: '#666'
						},
						icon: "circle"
					},
					grid: {
						//调整整个echars图的大小
						top: "28%",
						left: '2%',
						right: '2%',
						bottom: '5%',
						containLabel: true
					},
					xAxis: {
						type: 'category',
						axisTick: {
							show: false
						},
						axisLabel: {
							interval: 0,
							rotate: 40
						},
						axisLine: {
							show: false,
							lineStyle: {
								color: "#666666" //X轴文字颜色
							} // 样式
						},

						data: month
					},
					yAxis: [{
						type: 'value',
						name: '总数',
						position: 'left',
						axisLine: {
							show: false,
						},
						axisTick: {
							show: false,
						},
						splitLine: {
							lineStyle: {
								// type: 'dotted',
							}
						},
						// splitArea: { //背景条纹
						// 	show: true,
						// 	areaStyle: {
						// 		color: [
						// 			'rgba(255,255,255,0)',
						// 			'rgba(242,243,248,1)'
						// 		]
						// 	}
						//
						// },
						// min: 0,
						// splitNumber: 1,
					}],
					series: [
						{
							name: "计划完成",
							type: "line",
							smooth: true,
							symbol: 'circle',
							symbolSize: 10,
							data: type1,
							itemStyle: {
								normal: {
									color: '#5fbdff',
									lineStyle: {
										width: 3
									}
								}
							},
							label: {
								show: true,  //开启显示
								position: 'top',  //在上方显示
								// rotate: 20, // 旋转度数
								textStyle: {  //数值样式
									// color: 'black',
									fontSize: 11
								}
							}

						},
						{
							name: "实际时间",
							type: "line",
							smooth: true,
							symbol: 'circle',
							symbolSize: 10,
							data: type2,
							itemStyle: {
								normal: {
									color: '#ff975f',
									lineStyle: {
										width: 3
									}
								}
							},
							label: {
								show: true,  //开启显示
								position: 'top',  //在上方显示
								// rotate: 20, // 旋转度数
								textStyle: {  //数值样式
									// color: 'black',
									fontSize: 11
								}
							}
						}

					]
				}
				RenderBarChart.setOption(option);
			},
			//失败/超时
			error: function (XMLHttpRequest, textStatus, errorThrown) {
				if (textStatus === 'timeout') {
					alert('請求超時');
					setTimeout(function () {
						alert('重新请求');
					}, 2000);
				}
			}
		});

		// setTimeout(function() {
		// 	RenderBarChart.setOption(option);
		// 	RenderBarChart.hideLoading();
		// },1500)


	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在Java后端实现ECharts折线图,您需要遵循以下步骤: 1.首先,您需要在Java项目中引入ECharts库。您可以从以下链接下载ECharts-2.2.7.jar文件:http://mvnrepository.com/artifact/com.github.abel533/ECharts 2.接下来,您需要在前端使用ECharts.js。您可以从以下链接下载ECharts.js文件:http://echarts.baidu.com/echarts2/ 3.在Java代码中,您需要使用ECharts库提供的类来创建图表。以下是一个简单的示例代码,用于创建一个折线图: ```java import com.github.abel533.echarts.Option; import com.github.abel533.echarts.axis.CategoryAxis; import com.github.abel533.echarts.axis.ValueAxis; import com.github.abel533.echarts.code.AxisType; import com.github.abel533.echarts.code.LineType; import com.github.abel533.echarts.series.Line; import com.github.abel533.echarts.series.Series; public class EChartsLineChart { public Option getLineChart() { // 创建Option对象 Option option = new Option(); // 设置图表标题 option.title().text("折线图"); // 设置图表工具栏 option.toolbox().show(true); // 设置图表图例 option.legend().data("数据1", "数据2"); // 设置X轴 CategoryAxis xAxis = new CategoryAxis(); xAxis.type(AxisType.category); xAxis.data("一月", "二月", "三月", "四月", "五月", "六月"); option.xAxis(xAxis); // 设置Y轴 ValueAxis yAxis = new ValueAxis(); yAxis.type(AxisType.value); option.yAxis(yAxis); // 添加数据系列 Line line1 = new Line(); line1.name("数据1"); line1.type(Series.Type.line); line1.data(10, 20, 30, 40, 50, 60); Line line2 = new Line(); line2.name("数据2"); line2.type(Series.Type.line); line2.data(20, 30, 40, 50, 60, 70); option.series(line1, line2); return option; } } ``` 4.在您的Java代码中,您需要将数据整合到Option对象中,并将其返回前端。以下是一个简单的示例代码: ```java import com.github.abel533.echarts.Option; import com.github.abel533.echarts.json.GsonOption; public class EChartsController { public String getLineChartData() { // 创建ECharts折线图对象 EChartsLineChart lineChart = new EChartsLineChart(); // 获取Option对象 Option option = lineChart.getLineChart(); // 将Option对象转换为JSON字符串 GsonOption gsonOption = new GsonOption(); gsonOption.setOption(option); String json = gsonOption.toString(); // 返回JSON字符串 return json; } } ``` 5.最后,在前端代码中,您需要使用Ajax从后端获取数据,并使用ECharts.js将数据渲染为折线图。以下是一个简单的示例代码: ```javascript $.ajax({ url: "/getLineChartData", type: "GET", dataType: "json", success: function (data) { // 使用ECharts.js将数据渲染为折线图 var myChart = echarts.init(document.getElementById("lineChart")); myChart.setOption(data); } }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值