介绍

在vue中使用antV-G2展示基础面积图

G2 是一套基于图形语法理论的可视化底层引擎,以数据驱动,提供图形语法与交互语法,具有高度的易用性和扩展性。使用 G2,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表。

一、安装 antV-G2

通过 npm 安装

npm install @antv/g2 --save

成功安装完成之后,即可使用 import 或 require 进行引用。

import { Chart } from '@antv/g2';

浏览器引入

既可以通过将脚本下载到本地也可以直接引入在线资源:

<!-- 引入在线资源,选择你需要的 g2 版本以替换 version 变量 -->
<script src="https://gw.alipayobjects.com/os/lib/antv/g2/{{version}}/dist/g2.min.js"></script>
<!-- 引入本地脚本 -->
<script src="./g2.js"></script>

使用 script 标签引入 G2 资源时,挂载在 window 上的变量名为 G2,所以在上述实例中需要加上 G2 的前缀。如下:

const chart = new G2.Chart({/* your options */
});

二、在vue中使用antV-G2展示折线图

创建 div 图表容器

//html布局
<template>
<div class="container" id="container"></div>
</template>//对应的CSS样式
<style lang="scss">
body{ background: #222;}
.container{width:800px; height: 800px; margin: 100px auto;}
</style>

在data(){}中准备好将要展示的图表数据

data(){return {chart:null,//图表对象showData:[//图表中将要显示的数据{"year": "1951 年","sales": 38},{"year": "1952 年","sales": 52},{"year": "1956 年","sales": 61},{"year": "1957 年","sales": 145},{"year": "1958 年","sales": 48},{"year": "1959 年","sales": 38},{"year": "1960 年","sales": 38},{"year": "1962 年","sales": 38}],}
},

创建chart

//创建chart
createChart(){this.chart = new Chart({container: 'container',//chart容器idautoFit: false,//图表是否自适应容器宽高,默认为 falsewidth: 800,//图标宽度height: 400,//图表高度padding: [40, 40, 80, 40],//图表内边距,依次为:上,右,下,左// defaultInteractions:"ellipsis-text",//配置图表默认交互,仅支持字符串形式。G2 默认支持的交互有 'tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text'pixelRatio:window.devicePixelRatio,//设置设备像素比,默认取浏览器的值 window.devicePixelRatiorenderer:"canvas",//指定渲染引擎,默认使用 canvas。可选:'canvas' | 'svg'theme:"dark",//配置主题,目前 g2 默认有 dark 主题模式,如需要自定义配置,可以先通过 registerTheme 注册主题,再设置主题 key。visible:true,//chart 是否可见,默认为 true,设置为 false 则会隐藏。});
},

设置展示数据 showData

//设置数据
setChartData(){this.chart.data(this.showData);
},

设置坐标轴

//设置坐标轴
setChartAxis(){this.chart.scale("sales", {//Y轴 字段是 度量nice: true,});//设置Y轴//this.chart.axis("sales",false);//不需要Y轴,可以设置falsethis.chart.axis("sales", {//Y轴样式grid:{line:{type:"line",style:{// fill:'#ff0000',stroke:"#fff",opacity:0.3,lineDash:[1,3],//虚线}},},label:{style:{fill:"#fff",//文字颜色fontFamily: "Microsoft YaHei",//文字字体fontWeight: 400,//文字粗细fontSize: 12,//文字大小}},line:{style:{stroke:"#fff",//坐标轴颜色}},tickLine: {style:{stroke:"#fff",//刻度线颜色}},subTickLine:{style:{stroke:"#fff",//小刻度颜色}}});//设置X轴//this.chart.axis("year",false);//不需要Y轴,可以设置falsethis.chart.axis("year", {//X轴样式label: {formatter: (val) => {return val;// return +val * 100 + '%';},style:{fill:"#fff",//文字颜色fontFamily: "Microsoft YaHei",//文字字体fontWeight: 400,//文字粗细fontSize: 12,//文字大小}},line:{style:{stroke:"#fff",//坐标轴颜色}},tickLine: {style:{stroke:"#fff",//刻度线颜色}},subTickLine:{style:{stroke:"#fff",//小刻度颜色}}});
},

设置提示框信息样式

//设置提示框信息样式
setChartTooltip(){this.chart.tooltip({showMarkers: false,showCrosshairs: true,crosshairs:{line:{style:{stroke:"#fff",//辅助线颜色lineWidth:1,//辅助线粗细},}},domStyles:{'g2-tooltip':{background:"rgba(00, 00, 00,0.5)",//背景RGBA形式的值color:"#ffffff",//文字颜色boxShadow:"0px 0px 5px #000000",//阴影大小 阴影颜色 },},customItems: (items) => {//自定义显示的内容格式// console.log("items")// console.log(items)items[0].name="sales";return items;},});
},

设置图表样式

this.chart.interaction('element-active');//设置图表样式

设置图表折线和面积相关属性【折线和面积样式】

//设置图表折线和面积相关属性【折线和面积样式】
setChartStyle(){//折线样式var line=this.chart.line();line.style({ lineWidth:2,}).state({// selected:{//   style:{//     stroke:'red',//   }// }active:{style:{stroke:"#2681ff",//鼠标经过 折线颜色}}}).position("year"+"*"+"sales")//X轴 * Y轴.color("#2681ff")//折线颜色.shape("circle");//曲率//折线上是否显示值标签//line.label(false);//不需要显示,可以设置falseline.label("sales", {//标签值content: (originData) => {return originData["sales"]+"万";//设置值标签最终显示的内容},style: {fill: "#fff",fontFamily: "Microsoft YaHei",fontWeight: 400,fontSize: 16,// fill: "#ffffff",},position:"top",//显示位置})//显示圆点--折线上的圆点this.chart.point()//获得圆点对象.size(4)//圆点大小.style({ // strokeOpacity:1,fill: "#2681ff",//圆点颜色stroke:"#fff",//圆点边框颜色}).state({// selected:{//   style:{//     stroke:'red',//   }// }active:{style:{fill: "#3681ff",//鼠标经过 圆点颜色stroke:"#ff00ff",//鼠标经过 圆点边框颜色}}}).position("year"+"*"+"sales").color("#2681ff")//圆点颜色.shape('circle');//面积样式this.chart.area().position("year"+"*"+"sales").color("#B704E4")//面积颜色.shape('circle');//曲率
},

设置图例

this.chart.legend(false);//设置为false,表示不显示图例

设置动画

//设置动画
setChartAnimate(){// this.chart.animate(false);//设置为false,表示不使用动画效果this.chart.animate({// 初始化时的入场动画appear: {animation: 'fade-in', // 动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的出现动画enter: {animation: 'fade-in', //动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的动画leave: {animation: 'path-out', //动画名称:'fade-out'|'path-out'|'zoom-out'|'lineWidth-out'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的变化动画update: {animation: 'fade-in', //动画名称:'fade-in'|'fan-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},})
},

渲染图表

//渲染图表
this.chart.render();

三、效果预览

四、完整vue代码文件

<template>
<div class="container" id="container"></div>
</template>
<script>
import { Chart } from '@antv/g2';//柱状图
export default {components: {},name:"test",data(){return {chart:null,//图表对象showData:[//图表中将要显示的数据{"year": "1951 年","sales": 38},{"year": "1952 年","sales": 52},{"year": "1956 年","sales": 61},{"year": "1957 年","sales": 145},{"year": "1958 年","sales": 48},{"year": "1959 年","sales": 38},{"year": "1960 年","sales": 38},{"year": "1962 年","sales": 38}],}},created(){},mounted(){this.init();},methods:{// 初始化init(){this.createChart();//创建chartthis.setChartData();//设置字段和数据this.setChartAxis();//设置坐标轴和度量this.setChartTooltip();//设置提示信息this.chart.interaction('element-active');//设置图表样式this.setChartStyle();//设置图表折线相关属性this.chart.legend(false);//设置为false,表示不显示图例this.setChartAnimate();//设置动画//渲染图表this.chart.render();},//创建chartcreateChart(){this.chart = new Chart({container: 'container',//chart容器idautoFit: false,//图表是否自适应容器宽高,默认为 falsewidth: 800,//图标宽度height: 400,//图表高度padding: [40, 40, 80, 40],//图表内边距,依次为:上,右,下,左// defaultInteractions:"ellipsis-text",//配置图表默认交互,仅支持字符串形式。G2 默认支持的交互有 'tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text'pixelRatio:window.devicePixelRatio,//设置设备像素比,默认取浏览器的值 window.devicePixelRatiorenderer:"canvas",//指定渲染引擎,默认使用 canvas。可选:'canvas' | 'svg'theme:"dark",//配置主题,目前 g2 默认有 dark 主题模式,如需要自定义配置,可以先通过 registerTheme 注册主题,再设置主题 key。visible:true,//chart 是否可见,默认为 true,设置为 false 则会隐藏。});},//设置数据setChartData(){this.chart.data(this.showData);},//设置坐标轴setChartAxis(){this.chart.scale("sales", {//Y轴 字段是 度量nice: false,//是否自动调整 min、max 。默认为falsemin: 10,//度量最小值,max: 200,//度量最大值,如果不需要指定最大值可以设置max=null,或者不要填该参数});//设置Y轴//this.chart.axis("sales",false);//不需要Y轴,可以设置falsethis.chart.axis("sales", {//Y轴样式grid:{line:{type:"line",style:{// fill:'#ff0000',stroke:"#fff",//网格线颜色opacity:0.3,//网格线透明度lineDash:[1,3],//虚线}},},label:{style:{fill:"#fff",///Y轴文字颜色fontFamily: "Microsoft YaHei",///Y轴文字字体fontWeight: 400,///Y轴文字粗细fontSize: 12,///Y轴文字大小}},line:{style:{stroke:"#fff",//坐标轴颜色}},tickLine: {style:{stroke:"#fff",//刻度线颜色}},subTickLine:{style:{stroke:"#fff",//小刻度颜色}}});//设置X轴//this.chart.axis("year",false);//不需要Y轴,可以设置falsethis.chart.axis("year", {//X轴样式label: {formatter: (val) => {return val;// return +val * 100 + '%';},style:{fill:"#fff",//文字颜色fontFamily: "Microsoft YaHei",//文字字体fontWeight: 400,//文字粗细fontSize: 12,//文字大小}},line:{style:{stroke:"#fff",//坐标轴颜色}},tickLine: {style:{stroke:"#fff",//刻度线颜色}},subTickLine:{style:{stroke:"#fff",//小刻度颜色}}});},//设置提示框信息样式setChartTooltip(){this.chart.tooltip({showMarkers: false,showCrosshairs: true,crosshairs:{line:{style:{stroke:"#fff",//辅助线颜色lineWidth:1,//辅助线粗细},}},domStyles:{'g2-tooltip':{background:"rgba(00, 00, 00,0.5)",//背景RGBA形式的值color:"#ffffff",//文字颜色boxShadow:"0px 0px 5px #000000",//阴影大小 阴影颜色 },},customItems: (items) => {//自定义显示的内容格式// console.log("items")// console.log(items)items[0].name="sales";return items;},});},//设置图表折线和面积相关属性【折线和面积样式】setChartStyle(){//折线样式var line=this.chart.line();line.style({ lineWidth:2,}).state({// selected:{//   style:{//     stroke:'red',//   }// }active:{style:{stroke:"#2681ff",//鼠标经过 折线颜色}}}).position("year"+"*"+"sales")//X轴 * Y轴.color("#2681ff")//折线颜色.shape("circle");//曲率//折线上是否显示值标签//line.label(false);//不需要显示,可以设置falseline.label("sales", {//标签值content: (originData) => {return originData["sales"]+"万";//设置值标签最终显示的内容},style: {fill: "#fff",fontFamily: "Microsoft YaHei",fontWeight: 400,fontSize: 16,// fill: "#ffffff",},position:"top",//显示位置})//显示圆点--折线上的圆点this.chart.point()//获得圆点对象.size(4)//圆点大小.style({ // strokeOpacity:1,fill: "#2681ff",//圆点颜色stroke:"#fff",//圆点边框颜色}).state({// selected:{//   style:{//     stroke:'red',//   }// }active:{style:{fill: "#3681ff",//鼠标经过 圆点颜色stroke:"#ff00ff",//鼠标经过 圆点边框颜色}}}).position("year"+"*"+"sales").color("#2681ff")//圆点颜色.shape('circle');//面积样式this.chart.area().position("year"+"*"+"sales").color("#B704E4")//面积颜色.shape('circle');//曲率},//设置动画setChartAnimate(){// this.chart.animate(false);//设置为false,表示不使用动画效果this.chart.animate({// 初始化时的入场动画appear: {animation: 'fade-in', // 动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的出现动画enter: {animation: 'fade-in', //动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的动画leave: {animation: 'path-out', //动画名称:'fade-out'|'path-out'|'zoom-out'|'lineWidth-out'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},// 更新时的变化动画update: {animation: 'fade-in', //动画名称:'fade-in'|'fan-in'easing: 'easeQuadIn', // 动画缓动效果delay: 100, // 动画延迟执行时间duration: 600 // 动画执行时间},})},},
}
</script><style lang="scss">
body{ background: #222;}
.container{width:800px; height: 800px; margin: 100px auto; background: cadetblue;}
</style>

数据可视化工具推荐

基于VUE实现拖拽制作数据可视化大屏

基于SpringBoot+Vue3+mysql开发,支持多种数据源:excel、api接口、mysql、oracle、SqlServer等多种类型的数据源,支持数据模型转换,图形化编辑界面:拖拽即可完成大屏制作和数据配置,无需编程就能轻松搭建数据大屏。私有化部署:使用私有化部署的方式,保障贵公司的数据安全,数据大屏支持加密发布

界面展示

  1. 大屏编辑界面

    (https://www.51qingtian.com)

  2. 可视化大屏 

    (https://www.51qingtian.com)

  3. 数据模型 

    (https://www.51qingtian.com)

  4. 数据源 

    (https://www.51qingtian.com)

模板展示

  1. 健身数据报告

(https://www.51qingtian.com)

  1. 智慧园区数据统计中心

(https://www.51qingtian.com)

  1. 交通安全主题

(https://www.51qingtian.com)

  1. 财务数据大屏

(https://www.51qingtian.com)

  1. 智慧医疗大数据可视化大屏

(https://www.51qingtian.com)

官网

  1. 情天数据可视化 www.51qingtian.com

在vue中使用antV-G2展示基础面积图相关推荐

  1. VUE中 用AntV G6 + element 实现关系图展示

    1.效果图 (我的需求是做字段血缘展示) 2.官方文档 :https://antv-g6.gitee.io/zh/examples/tree/mindmap#hCustomSideMindmap 3. ...

  2. antvg2 环图轮播_在vue项目中引用Antv G2,以饼图为例讲解

    我就废话不多说了,大家还是直接看代码吧~ npm install @antv/g2 --save template内容: js部分: ​//引入G2组件 import G2 from "@a ...

  3. vue中使用Antv g6构建简单流程图

    vue中使用Antv g6构建简单流程图 前端小白第一次使用,项目需要一个流程图,看了一些博客,简单的写了一个,但是还是没实现项目的需求,希望有会的人帮忙指点一下.项目需要实现的是:可以自定义添加节点 ...

  4. vue - vue中使用echart实现柱状图和折线图

    vue中使用echart实现柱状图和折线图,所用到的数据会放到最后面,在costRate.js里面: 1,先看效果图 一些重要注释我都写到代码里面了:第一个图柱状图,第二个是折线图 2,代码实现 &l ...

  5. Echarts基础面积图

    Echarts基础面积图 <template><div :id="id"></div> </template> <script ...

  6. 在vue中使用antV-G2展示基础环状图

    介绍 G2 是一套基于图形语法理论的可视化底层引擎,以数据驱动,提供图形语法与交互语法,具有高度的易用性和扩展性.使用 G2,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 ...

  7. Vue中使用Echarts仪表盘展示实时数据

    在vue中echarts仪表盘实时数据 彩笔一枚,简单记录一下. 业务场景:通过websocket实时推送数据,将数据渲染到仪表盘中. 第一步: 基于准备好的dom,初始化echarts仪表盘实例. ...

  8. vue中使用antv/g6 绘制关系图、结构图_CAD小白必看!手把手教你如何看懂室内设计施工图图纸(平面立面剖面大样节点图)...

    号外!号外!你们心心念念的干货来了~ 室内设计施工图视频教程+CAD图库 可供大家学习研究,希望能对大家有所帮助.如果你喜欢请点赞收藏哦,谢谢~ 本期干货:室内设计施工图视频教程+CAD图库 领取方式 ...

  9. Vue中引入echarts的步骤,折线图、柱状图、饼图的常用配置项

    vue中引入echarts 一.安装echarts 二.引入echarts 1.全局引入 2.局部引入 三.vue中使用echarts 1.准备好函数 2.准备一个容器来放echarts 3.初始化容 ...

最新文章

  1. HDU - 6438(贪心+思维)
  2. CorelDraw技巧|设计师要了解数位板怎么用
  3. Java面向对象编程篇5——枚举
  4. 【OpenCV】OpenCV函数精讲之 -- copyTo()函数及Mask详解(附代码详解)
  5. 存放哪些内容 项目中vuex_房屋安全鉴定中房屋抗震检测内容有哪些
  6. 服务器CPU X86 ARM PowerPC RISC介绍
  7. linux下搭建DNS子域及相关授权详解
  8. python学习系列:装饰器
  9. max std value 宏_常用宏定义
  10. 面向对象程序设计方法学
  11. 高分辨率:遥感卫星影像
  12. Python问题:UnsortedIndexError: ‘MultiIndex slicing requires the index to be lexsorted: slicing on lev
  13. Python3快速入门—5.函数
  14. android如何释放资源文件,Android中的垃圾资源如何清理?
  15. 条形码扫不出来是不是假的?呃,真不一定
  16. The package java.awt is not accessible的解决方案
  17. rabbitmq用户及vhost配置
  18. XHR level2的新功能
  19. 场景,或许才是未来空间设计的关键词,可能是最接近元宇宙的空间体验? | 浅空间专栏...
  20. 影像科dsa为什么必须买维修保险_【科普】你不得不了解的“医学影像科设备及耗材大...

热门文章

  1. Qt 5.12 for Android 环境搭建+设置图标纵向横向+发布
  2. java多线程与动态代理
  3. NB-IoT到底是什么?
  4. 数据库DataBase(DB)
  5. 如何在Win10上搭建FTP服务器
  6. 奇瑞新能源与宁德时代“强强联合”
  7. Pycharm多行注释及多行缩进快捷键
  8. find命令的「七种武器」
  9. 认识一下 RabbitMQ
  10. 一文看懂数据服务DaaS