用amcharts动态生成饼图

4 篇文章 0 订阅
3 篇文章 0 订阅

客户端:发送ajax请求,获取图表数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>amCharts examples</title>
        <link rel="stylesheet" href="${pageContext.request.contextPath }/charts/style.css" type="text/css">
        <script src="${pageContext.request.contextPath }/charts/amcharts.js" type="text/javascript"></script>
        <script src="${pageContext.request.contextPath }/js/jquery.min.js" type="text/javascript"></script>
        <script src="${pageContext.request.contextPath }/charts/pie.js" type="text/javascript"></script>

        <script>
	        	var chartData = [];
		        var chart;
	            AmCharts.ready(function () {
	                // PIE CHART
	                chart = new AmCharts.AmPieChart();
	                chart.dataProvider = chartData;
	                chart.titleField = "factory_name";//横坐标
	                chart.valueField = "num";//纵坐标
	                chart.outlineColor = "#FFFFFF";//最外面的线的颜色
	                chart.outlineAlpha = 0.8;
	                chart.outlineThickness = 2;

	                // WRITE
	                chart.write("chartdiv");
	           });
				function loadStringData() {//发送ajax请求获取数据
					$.ajax({
					   type: "POST",
					   url: "/jk/run/factorysale/factorysale.action",
					   cache: false,
					   success: function(msg){
						 chart.dataProvider = msg;//把请求过来的数据给  dataProvider
						 chart.validateNow();  
						 chart.validateData();  //刷新图
					   },
					});
				}
  				setTimeout("loadStringData()", 100);//过100毫秒就发送请求给服务器获取图的数据
        </script>
    </head>

    <body>
        <div id="chartdiv" style="width: 100%; height: 400px;"></div>
    </body>

</html>

服务器端:查询数据库,把查询结果拼成字符串再用json格式返回

//厂家销售情况饼状图
	@ResponseBody 
	@RequestMapping(value="/run/factorysale/factorysale.action", method=RequestMethod.POST, produces="application/json;charset=UTF-8")
	 public String factorysale(){
		String sql = "SELECT f.factory_name,cp.num FROM(SELECT factory_id,factory_name FROM factory_c) f RIGHT JOIN "
		+ "(SELECT factory_id, COUNT(*) AS num FROM contract_product_c GROUP BY factory_id) cp ON f.factory_id=cp.factory_id";
		List<Map<String, Object>> dataList = super.getJdbcTemplate().queryForList(sql);
		StringBuffer sb = new StringBuffer("[");
		for(Map map: dataList) {
			sb.append(",").append("{\"factory_name\":").append("\""+map.get("factory_name")+"\"");
			sb.append(",").append("\"num\":").append("\""+map.get("num")+"\"").append("}");
		}
		sb.append("]");
		System.out.println(sb.toString().replaceFirst(",", ""));
		return sb.toString().replaceFirst(",", "");
	}

结果:


看起来还不错吧,ancharts使用简单,一看就会,一个字,爽!




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
xml <!-- [xml] (xml / csv) 数据类型xml/csv--> ; <!-- 如果使用csv作为数据的话,需要使用这个属性;表示文件数据分隔符,(平常以";"和","为主) [;] (string) csv file data separator (you need it only if you are using csv file for your data) --> 1 <!-- 如果使用的是csv数据,可以设置跳过几行再显示数据,默认为0表示csv中的数据全部显示,大于n(n>0);表示前面n行都不显示[0] (Number) if you are using csv data type, you can set the number of rows which should be skipped here --> <!-- 设置系统中的字体[Arial] (font name) use device fonts, such as Arial, Times New Roman, Tahoma, Verdana... --> <!-- 设置所有文本的大小,默认为11,具体的文本的字体大小也可以在下面的设置中设置[11] (Number) text size of all texts. Every text size can be set individually in the settings below --> <!-- 同上[#000000] (hex color code) main text color. Every text color can be set individually in the settings below--> . <!-- 小数分隔符,默认为[,]注:该属性只是用来显示,而在csv数据文件中,必须使用[.] (string) decimal separator. Note, that this is for displaying data only. Decimals in data xml file must be separated with a dot --> <!-- 千位分隔符,默认为空[ ] (string) thousand separator. use "none" if you don't want to separate --> 3 <!-- 如果百分数格式的数字,后面的小数位小于该属性的值,则在小数后面加0补充。如54.2%,该属性设置为3,那么显示的效果为54.200%。[] (Number) if your value has less digits after decimal then is set here, zeroes will be added --> <!--设置科学记数法的最小值 [0.000001] If absolute value of your number is equal or less then scientific_min, this number will be form
使用AmCharts构建地图需要遵循以下步骤: 1. 引入AmCharts的库文件。可以从AmCharts官网下载或者使用CDN链接引入。 2. 创建一个div容器来承载地图。 3. 创建一个地图对象,并设置地图的属性,例如地图类型、背景色、缩放等级等。 4. 加载地图数据。可以使用AmCharts提供的地图数据或者自己的地图数据。 5. 创建图层和图像对象,将地图数据显示在地图上。可以使用AmCharts提供的图层和图像对象,也可以自定义图层和图像对象。 6. 设置图层和图像对象的属性,例如颜色、边框、标签等。 7. 绑定事件处理程序,例如鼠标单击、鼠标移动等。 8. 将地图对象添加到div容器中显示。 下面是一个简单的例子: ```javascript // 引入AmCharts库文件 <script src="https://cdn.amcharts.com/lib/4/core.js"></script> <script src="https://cdn.amcharts.com/lib/4/maps.js"></script> <script src="https://cdn.amcharts.com/lib/4/geodata/worldLow.js"></script> // 创建一个div容器 <div id="chartdiv" style="width: 100%; height: 500px;"></div> // 创建地图对象 var chart = am4core.create("chartdiv", am4maps.MapChart); // 设置地图属性 chart.projection = new am4maps.projections.Miller(); chart.background.fill = am4core.color("#F5F5F5"); chart.zoomLevel = 2; // 加载地图数据 chart.geodata = am4geodata_worldLow; // 创建图层和图像对象 var polygonSeries = chart.series.push(new am4maps.MapPolygonSeries()); var polygonTemplate = polygonSeries.mapPolygons.template; // 设置图层和图像对象属性 polygonTemplate.fill = am4core.color("#74B266"); polygonTemplate.stroke = am4core.color("#FFFFFF"); polygonTemplate.strokeWidth = 1; // 绑定事件处理程序 polygonTemplate.events.on("hit", function(ev) { console.log("Clicked on ", ev.target.dataItem.dataContext.name); }); // 将地图对象添加到div容器中显示 chart.homeZoomLevel = 2; chart.homeGeoPoint = { longitude: 0, latitude: 0 }; chart.seriesContainer.draggable = false; chart.seriesContainer.resizable = false; ``` 这个例子创建了一个包含世界地图的AmCharts地图,并且设置了地图的属性、图层和图像对象的属性,并且绑定了一个单击事件处理程序。你可以根据自己的需要调整这个例子。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值