G2折线图

安装依赖

antv G2(官方资料)提供了多种安装方式, 这里使用npm添加依赖

npm install @antv/g2 --save

当前版本3.5.2

单折线

~/app/t 文件夹中创建组件 ChartComponent

$ ng generate component t/chart
或
$ ng g c t/chart

引入G2

import * as G2 from '@antv/g2';

在初始化ngOnInit()中构建

@Component({
  selector: 'app-chart',
  templateUrl: './chart.component.html',
  styleUrls: ['./chart.component.css']
})
export class ChartComponent implements OnInit {
	constructor(){}
	ngOnInit() {
		// 创建图表对象
		const chart = new G2.Chart({
			container: 'EL-ID',	// 用于绘图的容器, [EL-ID] -- HTML标签ID属性
			forceFit: true,     // 图表的宽度自适应开关, 设置为 true 时表示自动取 dom(实例容器)的宽度。
		});
		// 图表数据
		const data = [
	      {x: '1993', y: 23.5},
	      {x: '1994', y: 5},
	      {x: '1995', y: 4.9},
	      {x: '1996', y: 6},
	      {x: '1997', y: 7},
	      {x: '1998', y: 9},
	      {x: '1999', y: 13}
     	};
    	// 设置数据源
    	chart.source(data);
    	// 设置提示
    	chart.tooltips({
    		crosshairs: {
    			// rect 	表示矩形框,
    			// x 		表示水平辅助线,
    			// y|line  	【默认】表示垂直辅助线
    			// cross 	表示十字辅助线
    			type:'line'
    		}
    	});
    	
    	// 线条作色(画线条)
    	chart.line()
    		// 线条走势, 默认为直线
    		// geom.position('属性x*属性y'), 属性x会映射到X轴, 属性2会映射到Y轴
    		// 也可以传入数组方式 geam.position(['x', 'y'])
    		.position('x*y');
    	
    	// 点作色(画点)
    	// 注意 point() 方法返回的是 Geom 对象. 不是 Chart 对象
    	chart.point()	
	    	// 作色坐标为x*y, x-x轴, y-Y轴
	    	// 这里的坐标系需要与 chart.line().position() 坐标系一致
	    	// 如果写错(y*x)计算结果将不正确
    		.position('x*y')	
    		// point 图形的 size 影响点的半径大小
			// line, area, path 中的 size 影响线的粗细
			// interval 的 size 影响柱状图的宽度
    		.size(4)		
    		// 不同类型支持不同形状, 具体查看 https://www.yuque.com/antv/g2-docs/api-geom#lg9tks	
    		.shape('circle')
    		// 设置当前形状样式
    		.style({stroke:'#fff', lineWidth: 1});
    
    	// 最后一步渲染
    	chart.render();
	}
}

渲染结果
单折线图简单示例

多折线图

多折线图与单折线图区别主要有两点:

  • 数据至少需要3个维度
  • 需要指明作色参照物(字段)
import {Component, OnInit} from '@angular/core';
import * as G2 from '@antv/g2';

@Component({
  selector: 'app-chart',
  templateUrl: './chart.component.html',
  styleUrls: ['./chart.component.css']
})
export class ChartComponent implements OnInit {
	ngOnInit(){
		// 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势
		const data = [
			{x: '1991', z: 'a', y: 1},
			{x: '1991', z: 'b', y: 2},
			{x: '1991', z: 'c', y: 3},

			{x: '1992', z: 'a', y: 11},
			{x: '1992', z: 'b', y: 22},
			{x: '1992', z: 'c', y: 33},
			
			{x: '1993', z: 'a', y: 1},
			{x: '1993', z: 'b', y: 2},
			{x: '1993', z: 'c', y: 3}
		];
		const chart = new G2.Chart({container:'EL-ID', forceFix:true});
		chart.source(data);
		// 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接
		chart.line().position('x*y').color('z');
		// 在x*y的坐标上按z值绘制圆点
		chart.point().position('x*y').size(4).color('z').shape('circle');
		chart.render();
	}
}

渲染结果
多折线图示例

动态数据

图表数据往往来自后台, 有可能为实时监控. 下面通过setInterval()模拟后台数据

Chart.changeData(data: array | DataSet.View)
用于修改图表的数据源,注意这里 data 的数据结构需要同原始的数据结构保持一致。

 letoffset = 1;
 setInterval(() => {
 	// 清空过期数据
	data.splice(0,3);
   	// 添加新数据
   	data.push({x: 1993 + offset + '', z: 'a', y: 1 + offset});
   	data.push({x: 1993 + offset + '', z: 'b', y: 2 + offset});
   	data.push({x: 1993 + offset + '', z: 'c', y: 3 + offset});
   	// 模拟数据变化
   	offset = Math.random() * 10;
   	// 重新渲染
   chart.changeData(data);
 }, 1000);

动态数据示例

结语

G2 是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。

推荐阅读:

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AntV G2 是一款基于图形语法的可视化图表库,支持绘制多种类型的图表,包括柱状图、折线图等。要绘制分组柱状图和折线图混合的图表,可以使用 G2 的 ComboChart 组件。 首先,需要定义数据源,并指定数据字段的类型(例如 x 轴、y 轴等)。接着,可以使用 ComboChart 组件来绘制混合的图表。在 ComboChart 中,可以分别指定柱状图和折线图的样式、颜色等属性,如下所示: ```javascript import { Chart } from '@antv/g2'; const data = [ { year: '2010', sales: 450, profit: 200 }, { year: '2011', sales: 560, profit: 230 }, { year: '2012', sales: 620, profit: 250 }, { year: '2013', sales: 750, profit: 300 }, { year: '2014', sales: 800, profit: 350 }, ]; const chart = new Chart({ container: 'container', autoFit: true, height: 400, }); chart.data(data); chart.scale({ sales: { min: 0, }, profit: { min: 0, }, }); chart.axis('year', { label: { style: { fill: '#aaaaaa', }, }, }); chart.line().position('year*profit').color('#fdae6b'); chart.interval().position('year*sales').color('#2c7bb6'); chart.render(); ``` 在上面的代码中,我们定义了一个数据源,并指定了 x 轴和 y 轴的数据字段。接着,创建一个 Chart 实例,并指定容器,然后设置数据源和坐标轴的样式。最后,使用 line() 和 interval() 方法分别绘制折线图和柱状图,并指定它们的位置和颜色。 需要注意的是,ComboChart 支持多种混合图表类型,包括折线图、柱状图、面积图等,可以根据自己的需求选择适合的图表类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值