使用D3.js+Vue实现一个简单的柱形图
最近想在Vue的项目里尝试使用d3.js,封装一些常用的图表。这里记录一下自己搭建项目的过程,以及实现一个简单的柱形图。不了解D3的请移步,它是基于数据驱动文档工作方式的一款JavaScript函数库,主要用于网页作图、生成互动图形,是最流行的可视化库之一。 说明
项目搭建使用vue-cli搭建单页应用: D3安装(最新的v5版本):
D3引入:
实现一个简单的图表1.在Vue中获取dom元素 在vue中可以通过给标签添加ref属性,然后在js中利用this.$refs去引用它,从而操作该dom元素 一个简单的图表2.设置图表数据 矩形图主要构成部分有矩形、坐标轴和文字说明,我们需要的数据有图表的数据、图表宽度和矩形宽度 3.添加画布 要绘图,首先需要的是一块绘图的画布。D3提供了众多的SVG图形的生成器,我们在这里使用SVG画布。选择文档中的svg元素,这里用到了$refs属性 4.x轴比例尺 d3.scaleLinear(),线性比例尺,将一个连续的区间映射到另一区间。绘图时如果直接根据给出的数据给矩形的宽度赋值,有很大的局限性。比如一组数据里有一个数值为2000,我们是不可能用2000个像素来代表矩形的宽度的,因为画布没有那么长。这个时候我们就需要把某一区域的值映射到另一区域,转换的过程中大小关系不变。 5.矩形和label文字的容器,用于添加元素 在有数据却没有足够图形元素的时候,可以使用以下链式方法添加足够的元素: 6.添加矩形和label文字 绘制后的图形如下: 使用该组件怎么使用我们定义好的柱形图组件呢,分3步走: 1. import导入 2.设置数据 3.通过属性值传递给子组件
import BaseBarChart from '../components/base-bar-chart'
export default {
name: 'BaseBarChartView',components: {
BaseBarChart
},data () {
return {
barChart: {
data: [4,6,12,10,8,1,9],width: 540,barHeight: 20
}
}
}
}
路由配置和数据请求剩下的一部分就是各个页面的vue-router路由配置和主页的axios数据请求。 项目地址: 总结以上所述是小编给大家介绍的使用D3.js+Vue实现一个简单的柱形图,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |