【ExtJs】折线图

ExtJs在ExtJs4之后,包含4则推出了图表功能,虽然图表功能可以通过其余JQuery插件实现,例如《【jQuery】兼容IE6的图表插件Highcharts》(点击打开链接),但是这个ExtJs的图表插件也很优秀,至少一些常见的图表也是不虚的。


一、基本目标

画出如下的折现图:



二、制作过程

首先,ExtJs绘制图表的项目,与《【ExtJs】与后台数据库交互的带分页表格组件grid的查询》(点击打开链接)同样,要先定义一个数据实体。

	 	Ext.define('graphData',{
			extend:'Ext.data.Model',
			fields:[
				{name:'graphName',type:'string'},
				{name:'graphData',type:'int'}
			]
		});

然后,声明这个数据实体中的数据:

		var graphDataStore=Ext.create('Ext.data.Store',{
			model:'graphData',
			data:[
				{graphName:"1月",graphData:700},
				{graphName:"2月",graphData:800},
				{graphName:"3月",graphData:600},
				{graphName:"4月",graphData:500}	
			]
		});
如果数据由后端页面提供则这样写:

		var graphDataStore=Ext.create('Ext.data.Store',{
			model:'graphData',
			proxy:{
				type:'ajax',
				url:'showData.php',//提供Json字符串的页面
				reader:{
					type:'json',
					root:'data',
				}
			},
			autoLoad:true
		});

其中showData.php这个页面打印出如下字符串即可:

{  
'success':true,
'data':[  
{graphName:"1月",graphData:700},
{graphName:"2月",graphData:800},
{graphName:"3月",graphData:600},
{graphName:"4月",graphData:500}	
]  
}  
最后绘制折线图即可:

		var chart = new Ext.chart.Chart({
			//以下四项必须指定。否则无法显示。
			width: 480,
			height: 320,
			store: graphDataStore,
			renderTo: Ext.getBody(),
			axes: [{//声明左轴与底轴分别是什么
				type: 'Numeric',
				position: 'left',
				fields: 'graphData'
			}, {
				type: 'Category',
				position: 'bottom',
				fields: 'graphName'
			}],
			series: [{//声明填充x与y轴的数据分别是什么
				type: 'line',
				axis: 'left',
				xField: 'graphName',
				yField: 'graphData'
			}]
		});
因此,整个Line.html代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>折线图</title>
        <script type="text/javascript" src="../js/ext-all.js"></script>
        <script type="text/javascript" src="../js/bootstrap.js"></script>
        <script type="text/javascript" src="../js/ext-lang-zh_CN.js"></script>
        <link href="../ext-theme-classic/ext-theme-classic-all.css" rel="stylesheet" type="text/css">
    </head>
    <body>
    </body>
</html>
<script>
    Ext.onReady(function(){
	 	Ext.define('graphData',{
			extend:'Ext.data.Model',
			fields:[
				{name:'graphName',type:'string'},
				{name:'graphData',type:'int'}
			]
		});
		var graphDataStore=Ext.create('Ext.data.Store',{
			model:'graphData',
			data:[
				{graphName:"1月",graphData:700},
				{graphName:"2月",graphData:800},
				{graphName:"3月",graphData:600},
				{graphName:"4月",graphData:500}	
			]
		});
		var chart = new Ext.chart.Chart({
			//以下四项必须指定。否则无法显示。
			width: 480,
			height: 320,
			store: graphDataStore,
			renderTo: Ext.getBody(),
			axes: [{//声明左轴与底轴分别是什么
				type: 'Numeric',
				position: 'left',
				fields: 'graphData'
			}, {
				type: 'Category',
				position: 'bottom',
				fields: 'graphName'
			}],
			series: [{//声明填充x与y轴的数据分别是什么
				type: 'line',
				axis: 'left',
				xField: 'graphName',
				yField: 'graphData'
			}]
		});
	});
</script>


下面是一个基于 ExtJS 6 的折线图完整例子: ``` Ext.onReady(function () { Ext.define('SalesData', { extend: 'Ext.data.Model', fields: [ {name: 'month', type: 'string'}, {name: 'sales', type: 'float'} ] }); var store = Ext.create('Ext.data.Store', { model: 'SalesData', data: [ {month: 'Jan', sales: 100}, {month: 'Feb', sales: 200}, {month: 'Mar', sales: 300}, {month: 'Apr', sales: 250}, {month: 'May', sales: 350}, {month: 'Jun', sales: 400}, {month: 'Jul', sales: 450}, {month: 'Aug', sales: 500}, {month: 'Sep', sales: 550}, {month: 'Oct', sales: 600}, {month: 'Nov', sales: 700}, {month: 'Dec', sales: 800} ] }); var chart = Ext.create('Ext.chart.CartesianChart', { renderTo: 'chart-container', width: 600, height: 400, animate: true, store: store, axes: [{ type: 'numeric', position: 'left', fields: 'sales', title: 'Sales', grid: true, minimum: 0 }, { type: 'category', position: 'bottom', fields: 'month', title: 'Month' }], series: [{ type: 'line', xField: 'month', yField: 'sales', title: 'Sales' }] }); }); ``` 在这个例子中,我们定义了一个名为 `SalesData` 的数据模型,它有两个字段:`month` 和 `sales`。接着我们创建了一个名为 `store` 的数据源,它包含了一些假数据。 然后我们创建了一个名为 `chart` 的折线图,它使用了上面创建的数据源。我们定义了两个轴:一个用于绘制数值,一个用于绘制分类。我们还定义了一个系列,用于绘制折线图。 最后,我们将折线图渲染到页面上的一个元素中,这个元素的 ID 是 `chart-container`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值