AntV使用记录

	           this.chart = new Chart({
					container : "sectionViewChart",
					autoFit : true,
					height : chartHeight,
					padding : [10, 20, 50, 50],
					limitInPlot : true
				});
				this.chart.data(this.chartData);//data格式是JSON格式的数组对象
				this.chart.scale({
					pipeline : {
						alias : "管线号"
					},
					x : {
						// 定义别名
						alias : "x",
						// 自定义刻度间距
						tickInterval : 0.2,
						// 自定义最大值
						max : this.boundaryValueObj.maxX,

						// 自定义最小值
						min : this.boundaryValueObj.minX
					},
					y : {
						alias : "Y",
						max : this.boundaryValueObj.maxY,
						min : this.boundaryValueObj.minY
					},
					z : {
						alias : "半径"
					}
				});
				// 开始配置坐标轴
				this.chart.axis("x", {
					label : {
						// 格式化坐标轴显示文本
						formatter : val => {
							return val;
						}
					},
					grid : {
						line : {
							style : {
								stroke : "#d9d9d9",
								lineWidth : 1,
								lineDash : [2, 2],
                                
							}
						}
					}
				});
				this.chart.axis("y", {
					title : {
						offset : 64
					},
					label : {
						formatter : val => {
							return val;
						}
					}
				});
				this.chart.legend(false);//图例不显示
				this.chart.tooltip({
					title : "pipeline"
				});
				this.chart
					.point()
					.position("x*y")
					.color("#FFF")//圆的填充色
					.size("z", [10, 40])
					.label("number", {
						offset : 30, // 文本距离图形的距离
						style : {
							fill : "#47433b",
							stroke : "#47433b",//圆里的文字颜色
							lineWidth : 1

						}

					})
					.shape("circle")
					.tooltip("pipeline*z")
					.style("state", (val) => {
						if (val === "投用") {
							return {
								lineWidth : 2,
								stroke : "#00b050",//圆的边框颜色
								fillOpacity : 0.3
							};
						}
						return {
							lineWidth : 2,
							stroke : "#ff3939",//圆的边框颜色
							fillOpacity : 0.3
						};
					});
				this.chart.annotation().region({
					start : ["0%", "0%"],
					end : ["100%", "100%"],
					style : {
						lineWidth : 1,
						fillOpacity : 0,
						strokeOpacity : 1,
						stroke : "#545454"
					}
				});
				// chart.interaction('element-single-selected', {
				//     start: [{ trigger: 'element:click', action: 'element-single-selected:toggle' }],
				// });
               
				this.chart.interaction("view-zoom", {
					type : "XY", // 设置缩放的类型,'X' x 轴方向缩放, 'Y' y 轴方向缩放, 'XY' x 和 y 轴同时缩放
					stepRatio : 0.1, // 控制缩放速度,默认值 0.05
					minScale : -1, // 最小缩放比例,默认值 1
					maxScale : -4, // 最大缩放比例,默认值 4
					// catStep: 2 // 分类数据的缩放速度,默认值 2
                    //缩放方向默认和浏览器相反,在此修改方向
					start : [
						{
							trigger : "plot:mousewheel",
							isEnable(context) {
								return isWheelDown(context.event);
							},
							action : "scale-zoom:zoomIn",
							throttle : {wait : 100, leading : true, trailing : false}
						},
						{
							trigger : "plot:mousewheel",
							isEnable(context) {
								return !isWheelDown(context.event);
							},
							action : "scale-zoom:zoomOut",
							throttle : {wait : 100, leading : true, trailing : false}
						}
					]
				});
				this.chart.render();
				this.chart.getCanvas().on("mousewheel", ev => {
					ev.preventDefault();
				});
                //点击事件
				this.chart.on("point:click", async (ev) => {
					const pointElement = ev.target.get("element");
					const data = pointElement.getModel().data;
					//拿到数据之后的操作
				});
				

导出图片(在4.x之后需要自己封装)

	/**
			 * 返回图表的 dataURL 用于生成图片。
			 * @param chart 需要获取 DataURL 的 chart 实例
			 * @returns 返回图表的 dataURL
			 */
			toDataURL(chart) {
				const canvas = chart.getCanvas();
				const renderer = chart.renderer;
				const canvasDom = canvas.get("el");
				let dataURL = "";
				if (renderer === "svg") {
					const clone = canvasDom.cloneNode(true);
					const svgDocType = document.implementation.createDocumentType(
						"svg",
						"-//W3C//DTD SVG 1.1//EN",
						"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"
					);
					const svgDoc = document.implementation.createDocument("http://www.w3.org/2000/svg", "svg", svgDocType);
					svgDoc.replaceChild(clone, svgDoc.documentElement);
					const svgData = new XMLSerializer().serializeToString(svgDoc);
					dataURL = "data:image/svg+xml;charset=utf8," + encodeURIComponent(svgData);
				} else if (renderer === "canvas") {
					dataURL = canvasDom.toDataURL("image/png");
				}
				return dataURL;
			},


              //使用,在图表生成后,导出图片
				setTimeout(() => {
					this.chartUrl = this.toDataURL(this.chart);
					// console.log(dataUrl);
				}, 1500);

因为项目中需要图纸和列表切换,所以需要控制canvas标签的显隐来切换

	$("#sectionViewChart").find("canvas").show();
    $("#sectionViewChart").find("canvas").hide();

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值