ext-anychart柱状图呈现取自数据库中的数据

1、类PatrolMonitor采用Map存储数据。该例子select语句查出了3个字段。用time,cnt,status来表示。然后用&&拼接在一起,给result.0、10001、10002分别表示正常,不正常,异常(这是根据需求写的,用在别处重新定义即可)。

public Map<String ,Map<Date,String>> getALXBarData(){
Map<String ,Map<Date,String>> map = new HashMap<String ,Map<Date,String>>();
Map<Date,String> tempMap_1 = new TreeMap<Date,String>();
Map<Date,String> tempMap_2 = new TreeMap<Date,String>();
Map<Date,String> tempMap_3 = new TreeMap<Date,String>();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
Connection con =null;
Statement stat = null;
ResultSet rs = null;
String sql="";
String result="";
try {
con = DataService.getConnection();
stat = con.createStatement();
sql="select 。。。。。" +
";
rs = stat.executeQuery(sql);
while(rs.next()){
String time = rs.getString(1);
String cnt = rs.getString(2);
String status = rs.getString(3);
result = time+"&&"+cnt+"&&"+status;
Date dt = format.parse(time);
if(status.trim().equals("0")){
tempMap_1.put(dt, result);
}else if(status.trim().equals("10001")){
tempMap_2.put(dt, result);
}else if(status.trim().equals("10002")){
tempMap_3.put(dt, result);
}
}
map.put("0", tempMap_1);
map.put("1", tempMap_2);
map.put("2", tempMap_3);
} catch (Exception e) {
e.printStackTrace();
}
return map;
}

2、在js中调用上面取到的数据。有三个柱状图的对比(对应在3个for循环)。

Ext.onReady(function() {
	var panel1 = new Ext.Panel({
		title : '柱状图呈现',
		autoWidth : true,
		height:200,
		items : [new Ext.Panel({
				   loadMask:({msg:'数据加载中...'}),
					autoWidth : true,
					height : 200,
					layout : 'fit',
		            id:"flashpanel",
		             border:false,
		             html:"<table width=100% height=160><tr></tr><tr><td align=center><img  src='images/loadmask.gif'/></td></tr></table>"
		        })]
	})
	document.getElementById("grid1").innerHTML = "";
	document.getElementById("grid1").align = "left";
	panel1.render("grid1");
	
	patrolMonitor.getALXBarData(function(data){//在dwr.xml有相应的配置
		var dateArr_1 = data['0'];
		var dateArr_2 = data['1'];
		var dateArr_3 = data['2'];
		
		var xml ="<anychart>" +
					"	<margin left='-10' right='-10' top='-10' bottom='-10'/>" +
					         "<settings> <animation enabled='True'/> </settings>" +
					         "<charts>" +
					         "<chart plot_type='CategorizedVertical'> "+
					         "<data_plot_settings default_series_type='Bar'>"+
							"<bar_series group_padding='0.2'>"+
								"<tooltip_settings enabled='true'>" +
								"<format>时间:{%time}点\r\n{%axisName}:{%Value}{numDecimals:0}</format>"+
								"</tooltip_settings>"+
							"</bar_series>"+
						"</data_plot_settings>"+
						
						"<chart_settings>"+
						"<title enabled='false'>"+
						"</title>"+
						"<axes>" +
						"			  	 <x_axis >" +
						"					 <title><text></text></title>" +
						"				 </x_axis>" +
						"			 <y_axis><scale minimum='0'/>" +
						"				 <title><text></text></title>" +
						"				 <labels>" +
						"                  <format>{%Value}{numDecimals:0}</format>"+
						"				 </labels>"+
						"			 </y_axis>"+
						"		 	</axes>" +
						"</chart_settings>" +
						
						"<data><series name='Series 1'>";
			for(var key in dateArr_1){
				var dataStr = dateArr_1[key];
				var time = dataStr.split('&&')[0];
				var cnt = dataStr.split('&&')[1];
				
				xml+="<point name='"+time+"' y='"+cnt+"'>" +
						"<attributes>" +
							"<attribute name='axisName'>正常数</attribute>" +
							"<attribute name='time'>"+time+"</attribute>" +
						"</attributes>" +
					 "</point>";
			}
		
			xml+="</series><series name='Series 2'>";
			for(var key in dateArr_2){
				var dataStr = dateArr_2[key];
				var time = dataStr.split('&&')[0];
				var cnt = dataStr.split('&&')[1];
			
				xml+="<point name='"+time+"' y='"+cnt+"'>" +
						"<attributes>" +
							"<attribute name='axisName'>不正常数</attribute>" +
							"<attribute name='time'>"+time+"</attribute>" +
						"</attributes>" +
					 "</point>";
			}
			xml+="</series><series name='Series 2'>";
			for(var key in dateArr_3){
				var dataStr = dateArr_3[key];
				var time = dataStr.split('&&')[0];
				var cnt = dataStr.split('&&')[1];
				
				xml+="<point name='"+time+"' y='"+cnt+"'>" +
						"<attributes>" +
							"<attribute name='axisName'>异常数</attribute>" +
							"<attribute name='time'>"+time+"</attribute>" +
						"</attributes>" +
					 "</point>";
			}
			xml+= "</series></data>"+
					"</chart>"+
				"</charts>"+
			"</anychart>"
				
			var chartSample = new AnyChart('./anyChart/AnyChart.swf');
			chartSample.width =Ext.lib.Dom.getViewWidth()*0.57;
			chartSample.height = 174;
			chartSample.setData(xml);
			chartSample.write('flashpanel');
	});

 

3、jsp页面,要使用ext anychart等要导入一些文件到webroot下。

导入的是:anyChart  ext3.0 images resources   DWRProxy.js等。在body中有 <div id ="grid1">


 

好的,您需要使用以下步骤来建立一个柱状图: 1. 连接到您的数据库,并执行一个查询来检索您需要的数据。您可以使用 SQL 语句来检索数据。 2. 将查询结果存储在一个变量,以便稍后使用。 3. 使用 Matplotlib 库在 Python 创建柱状图。您可以使用以下代码: ```python import matplotlib.pyplot as plt # 数据 data = [1, 2, 3, 4, 5] # 创建柱状图 plt.bar(range(len(data)), data) # 添加标签和标题 plt.xticks(range(len(data)), ['A', 'B', 'C', 'D', 'E']) plt.ylabel('数量') plt.title('柱状图') # 显示表 plt.show() ``` 4. 在代码使用查询结果填充数据列表,以便在柱状图显示您的数据。 下面是一个示例代码,展示如何从 MySQL 数据库检索数据,并在 Matplotlib 创建一个柱状图: ```python import mysql.connector import matplotlib.pyplot as plt # 连接到MySQL数据库 mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="mydatabase" ) # 执行查询 mycursor = mydb.cursor() mycursor.execute("SELECT name, amount FROM products") # 获取查询结果 result = mycursor.fetchall() # 提取结果数据 labels = [row[0] for row in result] data = [row[1] for row in result] # 创建柱状图 plt.bar(range(len(data)), data) # 添加标签和标题 plt.xticks(range(len(data)), labels) plt.ylabel('数量') plt.title('柱状图') # 显示表 plt.show() ``` 请注意,您需要将 `yourusername`,`yourpassword` 和 `mydatabase` 替换为您自己的数据库凭据和数据库名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值