JFinal工作笔记(饼图)

本文介绍如何使用JFinal框架和ECharts库创建动态饼图,展示调查问卷的地区分布统计数据。从Controller层、Service层到前端界面,详细解析了数据处理和图表生成的全过程。

创建json文件放置echart实列模板(地区分布情况)

stat_chart.json

{
    title: {
        text: '调查问卷用户统计分布图',
        subtext: '地区分布',
        x: 'center'
    },
    tooltip: {
        trigger: 'item',
        formatter: "{a} \<br/>{b} : {c} ({d}%)"  
        
    },
    toolbox: {
		right:20,
		show : true,
		feature : {
    	mark : {show: true},
    	dataView : {show: true, readOnly: false},
    	restore : {show: true},
    	saveAsImage : {show: true}
		}
	},
    legend: {
        orient: 'vertical',
        left: 'center',
        bottom: 'bottom',
        data: #(regionname)
    },
    series: [{
        type: 'pie',
        name: '地区分布',
        radius: '55%',
        center: ['50%', '60%'],
        itemStyle: {
            emphasis: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
        },
        data: #(regionmap)
    }]
}

#(regionname) 、#(regionmap)为jfinal模板引擎,regionname、regionmap为Java中拼接的echart模板data字符串

controller层
//饼图
public void stat_chart() {
	Long id = getParaToLong();
	setAttr("id", id);
	Map<String, Long> regionmap = investService.getAllRegion(id);   //获取用户地区
	Kv data = Kv.create();
	//拼接饼图字符串legend和series
	String str1="";
	String str2="";
	int i=1;
	//拼接legend :data字符串str1,series:data字符串str2
	for(String key : regionmap.keySet()) {
		str1 += key;
		str2 += "{name:'"+key+"',value:"+regionmap.get(key);
		for(;i<=regionmap.size();) {
			if(i==regionmap.size())
				{	str1 +=""; str2 +="}"; ++i; break;	}
			else 
				{   str1 +="','";str2 +="},"; ++i; break; }
		}
		data.set("regionname", "['"+str1 +"']" );	
		data.set("regionmap", "["+str2+"]");
	}
	//获取chart模板,路径自定义
	String option1 = Engine.use().getTemplate(PathKit.getRootClassPath() +  "/templates/stat_chart.json").renderToString(data);  
	set("option1", option1);
	render("stat_chart.html");
}
Service层

获取地区.getAllRegion()

public Map<String, Long> getAllRegion(Long id) {
	String sql="	select DISTINCT " + 
			"		ifnull(u.city,'其它地区') as city ,convert(count(ifnull(u.city,'其它地区'))/(select count(*) from iv_item as ii where ii.lib_id="+id+"),decimal(10,0)) as count " + 
			"		from iv_feedback f " + 
			"		left join sys_user u on f.user_id=u.id " + 
			"		where f.lib_id = " + id + 
			"		group by f.user_id "; 
	
	List<Record> record=Db.find(sql);
	Map<String, Long> regionmap =new HashMap<String, Long>();
	for(Record r : record) {
		regionmap.put(r.getStr("city"),r.getLong("count"));
	}
	return regionmap;
}
前端界面
<div class="container-fluid">
	
	<input type="hidden" id="id" name="id" value="#(id)" />
	<div class="col-md-6 col-sm-6" style="width: 100%; height: 100%">
		<div id="stat_chart_region" class="CSSAnimationChart"></div>
	</div>
</div>
<script src="#(ctx)/assets/global/plugins/counterup/jquery.waypoints.min.js" type="text/javascript"></script>
<script src="#(ctx)/assets/global/plugins/counterup/jquery.counterup.min.js" type="text/javascript"></script>
<script>
$(function () {
	var option1 = #(option1);
	var myChart = echarts.init(document.getElementById('stat_chart_region'));
	myChart.setOption(option1);
	
})
</script>
内容概要:本文围绕六自由度机械臂的人工神经网络(ANN)设计展开,重点研究了正向与逆向运动学求解、正向动力学控制以及基于拉格朗日-欧拉法推导逆向动力学方程,并通过Matlab代码实现相关算法。文章结合理论推导与仿真实践,利用人工神经网络对复杂的非线性关系进行建模与逼近,提升机械臂运动控制的精度与效率。同时涵盖了路径规划中的RRT算法与B样条优化方法,形成从运动学到动力学再到轨迹优化的完整技术链条。; 适合人群:具备一定机器人学、自动控制理论基础,熟悉Matlab编程,从事智能控制、机器人控制、运动学六自由度机械臂ANN人工神经网络设计:正向逆向运动学求解、正向动力学控制、拉格朗日-欧拉法推导逆向动力学方程(Matlab代码实现)建模等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握机械臂正/逆运动学的数学建模与ANN求解方法;②理解拉格朗日-欧拉法在动力学建模中的应用;③实现基于神经网络的动力学补偿与高精度轨迹跟踪控制;④结合RRT与B样条完成平滑路径规划与优化。; 阅读建议:建议读者结合Matlab代码动手实践,先从运动学建模入手,逐步深入动力学分析与神经网络训练,注重理论推导与仿真实验的结合,以充分理解机械臂控制系统的设计流程与优化策略。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值