`
yiyu
  • 浏览: 186650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从服务器获取Chart的数据

阅读更多
ExtJs提供了绘制图表的功能,可以绘制折线图、条形图和饼图。这里是一个从servlet获取数据绘制折线图和饼图的例子。下图是最后的结果:




客户端html代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>chart demo</title>

<link rel="stylesheet" type="text/css"
	href="../ext/resources/css/ext-all.css" />

<script type="text/javascript"
	src="../ext/adapter/ext/ext-base-debug.js"></script>
<script type="text/javascript" src="../ext/ext-all-debug.js"></script>
<script type="text/javascript" src="chart.js"></script>
</head>
<body>

<div id="line-chart"></div>
<div id="pie-chart"></div>

</body>
</html>


客户端chart.js代码如下:
Ext.chart.Chart.CHART_URL = '../ext/resources/charts.swf';

Ext.onReady(function() {

			var lineStore = new Ext.data.JsonStore({
						autoDestroy : true,
						url : '/extapp/ChartServlet',
						baseParams : {
							'type' : 'line'
						},
						root : 'data',
						fields : ['name', 'visits', 'views']
					});

			lineStore.load();

			// extra extra simple
			new Ext.Panel({
						title : '线图',
						renderTo : 'line-chart',
						width : 300,
						height : 200,
						layout : 'fit',

						items : {
							xtype : 'linechart',
							store : lineStore,
							xField : 'name',
							yField : 'visits',
							listeners : {
								itemclick : function(o) {
									var rec = lineStore.getAt(o.index);
									Ext.Msg.alert('Item Selected', 'You chose '
													+ rec.get('name'));
								}
							}
						}
					});

			var pieStore = new Ext.data.JsonStore({
						autoDestroy : true,
						url : '/extapp/ChartServlet',
						baseParams : {
							'type' : 'pie'
						},
						root : 'data',
						fields : ['season', 'total']
					});

			pieStore.load();

			// extra extra simple
			new Ext.Panel({
						title : '饼图',
						renderTo : 'pie-chart',
						width : 300,
						height : 300,
						layout : 'fit',
						items : {
							xtype : 'piechart',
							store : pieStore,
							dataField : 'total',
							categoryField : 'season',
							extraStyle : {
								legend : {
									display : 'bottom',
									padding : 5,
									font : {
										family : 'Tahoma',
										size : 13
									}
								}
							},
							listeners : {
								itemclick : function(o) {
									var rec = pieStore.getAt(o.index);
									Ext.Msg.alert('Item Selected', 'You chose '
													+ rec.get('season'));
								}
							}
						}
					});
		});


其中第一句Ext.chart.Chart.CHART_URL = '../ext/resources/charts.swf';是为了使用当前服务器的文件,如果没有这句话,默认会去adobe的站点取。

折线图和饼图的数据都是通过JsonStore取得的,可以通过url属性指定提供数据的地址,通过baseParam属性指定参数,其实这两个就是向服务器发送POST命令的url地址和参数。

折线图和饼图都是通过Panel的items属性定义的。折线图的xtype是linechart,x轴和y轴通过xField,和yField定义。饼图的xtype是piechart,分类通过categoryField定义,数据通过dataField定义。两者都可以通过listeners定义事件响应函数,这里分别定义了鼠标点击事件。

以下是服务器端的servlet的代码片段:
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost");

		String type = request.getParameter("type");
		System.out.println("type = " + type);

		PrintWriter out = response.getWriter();
		if (type.equals("line")) {
			out.print(lineChartData());
		} else if (type.equals("pie")) {
			out.print(pieChartData());
		}
	}

	
	private String lineChartData() {
		StringBuilder sb = new StringBuilder();
		sb.append("{");
		sb.append(" data : [{");
		sb.append("  name : 'Jul 07',visits : 245000,views : 3000000");
		sb.append(" },{");
		sb.append("  name : 'Aug 07',visits : 205000,views : 3000000");
		sb.append(" },{");
		sb.append("  name : 'Sep 07',visits : 115000,views : 3000000");
		sb.append(" },{");
		sb.append("  name : 'Oct 07',visits : 255000,views : 3000000");
		sb.append(" },{");
		sb.append("  name : 'Nov 07',visits : 345000,views : 3000000");
		sb.append(" },{");
		sb.append("  name : 'Dec 07',visits : 315000,views : 3000000");
		sb.append(" }]");
		sb.append("}");
		
		return sb.toString();
	}
	
	
	private String pieChartData() {
		StringBuilder sb = new StringBuilder();
		sb.append("{");
		sb.append(" data : [{");
		sb.append("  season: 'Summer',total: 150");
		sb.append(" },{");
		sb.append("  season: 'Fall',total: 245");
		sb.append(" },{");
		sb.append("  season: 'Winter',total: 117");
		sb.append(" },{");
		sb.append("  season: 'Spring',total: 184");
		sb.append(" }]");
		sb.append("}");
		
		return sb.toString();
	}


服务器端比较简单,根据参数分别返回折线图和饼图的数据。
  • 大小: 18.7 KB
分享到:
评论

相关推荐

    c# winform chart——数据统计软件——Chart 曲线图

    接下来,我们需要从服务器获取数据。这通常涉及到网络编程,可以使用`HttpClient`类或者`WebClient`类来发送HTTP请求。假设我们有一个API接口返回JSON格式的数据,可以使用`Newtonsoft.Json`库来解析数据: ```...

    highcharts实现从mysql数据库获取数据生成折线图

    可以使用Ajax请求从服务器获取数据,然后在客户端用`Highcharts.series[0].setData()`方法更新数据。 ```javascript $.ajax({ url: 'chart_data.jsp', type: 'GET', success: function(data) { Highcharts....

    ajax动态获取数据渲染的charts图表

    总的来说,"Ajax动态获取数据渲染的Charts图表"是一个结合了Ajax和Highcharts的实例,它展示了如何从服务器获取数据并实时更新图表,为用户提供动态的、交互式的视觉体验。这个项目对于学习Web前端数据可视化和交互...

    Ext3.0 动态数据 Chart 初探

    数据可以是静态数组,也可以是从服务器获取的动态数据: ```javascript var store = new Ext.data.Store({ model: 'ChartData', data: [ { name: 'Category 1', value: 10 }, // 更多数据项... ] }); ``` ...

    echart后台获取数据实例

    总的来说,这个实例展示了如何通过后端(Java)与前端(JSP 和 ECharts)协作,实现动态从服务器获取数据并显示在 ECharts 图表上的过程。这种做法适用于数据量较大或者数据实时更新的情况,避免了在页面加载时一次...

    highChart后台动态获取数据

    动态获取数据意味着图表的数据不是在页面加载时就已知,而是通过Ajax请求从服务器获取。这可以实现图表的实时更新或者根据用户交互加载更多数据。你可以使用jQuery的`$.ajax`或`$.getJSON`方法来发送请求,获取后端...

    Open Flash Chart所需文件

    - **数据源连接**:可以实时从数据库或其他数据源获取数据,动态更新图表。 - **自定义函数**:可以编写ActionScript代码实现更复杂的图表功能,如自定义形状、特效等。 5. **集成与兼容性**:Open Flash Chart...

    asp.net 图表 c#图表 chart 统计图(c#版含实例)

    例如,你可以从数据库中获取销售数据,然后用这些数据生成一个柱状图,展示每个月的销售额。 总结一下,"asp.net 图表 c#图表 chart 统计图(c#版含实例)"这个主题主要关注的是如何在ASP.NET应用中使用C#和...

    js-Chart.js资料包

    在实际项目中,Chart.js通常会与Ajax技术结合,用于从服务器获取数据并动态更新图表。通过Ajax请求,前端可以异步地获取最新的数据,然后调用Chart.js的update方法更新图表内容,实现数据的实时展示。这种设计模式有...

    orgchart-demo简单demo

    在 `orgchart-demo` 中,可能使用了AJAX来实现动态加载数据,比如当用户展开一个组织单元时,通过AJAX请求获取子级成员的信息,然后动态添加到图表中,提高用户体验。 【组织结构图】 是一种图形化表示组织内部结构...

    Jquery图表JQuery_Chart

    8. **数据绑定**:插件可能支持JSON或其他数据格式,方便从服务器获取并展示数据,实现了前后端分离的数据处理模式。 9. **事件处理**:可以绑定各种用户交互事件,如点击、悬停等,以触发相应的响应,提升图表的...

    jQuery组织结构图表插件OrgChart

    而通过AJAX,插件可以从服务器获取实时更新的数据,增加了灵活性和交互性。 2. **布局样式**:OrgChart提供了多种布局方式,如垂直(默认)、水平、自定义方向等,以适应不同场景的需求。这些布局可以通过配置参数...

    webchart

    1. 数据源:确定如何将数据传递给WebChart,这可能是从服务器获取的JSON数据,或是直接在JavaScript代码中定义的数组。 2. 图表类型:选择适合你数据的图表类型,例如,时间序列数据可能适合折线图,分类数据则更...

    HTML制作Chart报表

    `GetData()`方法是根据实际需求从数据库或其他数据源获取数据的函数,返回一个支持数据绑定的数据集,如DataTable或List。 此外,Microsoft Chart Controls还支持多种高级特性,如交互式图表、自定义轴格式、图例、...

    asp.net webchart 实例

    - **数据绑定**:WebChart控件通常需要与数据库或其他数据源进行交互,以获取图表所需的数据。可能的例子包括从SQL Server或CSV文件中提取数据,并显示为条形图、折线图或饼图。 - **自定义样式**:每个WebForm...

    EXTJS 折线 chart action 代码示例

    4. 将store与chart关联:设置chart的store属性为之前创建的store,这样chart就能从store中获取数据并显示。 对于远程加载数据,EXTJS提供两种方法: 1. 使用proxy:这是EXTJS推荐的方式。你可以为store添加一个...

    图表生成chart

    在这个系统中,Ajax负责从服务器获取JSON数据,这通常通过发送HTTP请求实现,接收到响应后,再对数据进行处理。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于...

    Open Flash Chart 报表插件相关

    4. **编写JavaScript**:使用JavaScript(可能配合jQuery等库)发送AJAX请求到服务器获取JSON数据,然后将数据传递给Open Flash Chart的SWF对象,告诉它如何绘制图表。 5. **渲染图表**:Open Flash Chart接收到数据...

    sencha touch2 ajax 获取数据

    在探讨“Sencha Touch2 AJAX获取数据”的主题时,我们首先需要理解Sencha Touch2框架的基本概念以及AJAX技术在其中的应用。Sencha Touch2是一个用于构建高性能、跨平台的移动应用的JavaScript库,它专注于触摸设备上...

    .net web开发 Chart控件使用实例

    例如,你可以使用SQLDataSource或ObjectDataSource来连接数据库,获取数据后自动填充到Chart控件中。在代码中,也可以使用`Series`对象来手动添加数据点,如: ```csharp Chart1.Series["Series1"].Points.AddXY(...

Global site tag (gtag.js) - Google Analytics