在Vue项目中使用d3.js的实例代码


Posted in Javascript onMay 01, 2018

之前写一个 Demo里面 有些东西要使用d3实现一些效果 但是在很多论坛找资源都找不到可以在Vue里面使用D3.js的方法,npm 上面的D3相对来说 可以说是很不人性化了 完全没有说 在webpack上怎么使用D3.js

最后折腾很久 看到某位外国大佬 看他的案例 成功的实现了在Vue项目里面实现D3的使用

首先安装

npm install d3 --save-dev

以防万一,然后看package.json

在Vue项目中使用d3.js的实例代码

安装完成

在我们开始之前,让我们渲染一个Vue组件,它使用常规的D3 DOM操作呈现一个简单的折线图:

<script>
import * as d3 from 'd3';
const data = [99, 71, 78, 25, 36, 92];
export default {
 name: 'non-vue-line-chart',
 template: '<div></div>',
 mounted() {
  const svg = d3.select(this.$el)
   .append('svg')
   .attr('width', 500)
   .attr('height', 270)
   .append('g')
   .attr('transform', 'translate(0, 10)');
  const x = d3.scaleLinear().range([0, 430]);
  const y = d3.scaleLinear().range([210, 0]);
  d3.axisLeft().scale(x);
  d3.axisTop().scale(y);
  x.domain(d3.extent(data, (d, i) => i));
  y.domain([0, d3.max(data, d => d)]);
  const createPath = d3.line()
   .x((d, i) => x(i))
   .y(d => y(d));
  svg.append('path').attr('d', createPath(data));
 },
};
</script>
<style lang="sass">
svg
 margin: 25px;
 path
  fill: none
  stroke: #76BF8A
  stroke-width: 3px
</style>

代码简单易懂,但这仅仅是一个基本的例子。因为我们没有使用模板,所以需要更多操作和计算的更复杂的可视化会掩盖组件的设计和逻辑。上述方法的另一个警告是,我们不能使用scopedCSS 的属性,因为D3会动态地向DOM添加元素。

在Vue项目中使用d3.js的实例代码

可以使用比较奇怪,但是代码比较优雅的方式去实现

<template>
 <svg width="500" height="270">
  <g style="transform: translate(0, 10px)">
   <path :d="line" />
  </g>
 </svg>
</template>
<script>
import * as d3 from 'd3';
export default {
 name: 'vue-line-chart',
 data() {
  return {
   data: [99, 71, 78, 25, 36, 92],
   line: '',
  };
 },
 mounted() {
  this.calculatePath();
 },
 methods: {
  getScales() {
   const x = d3.scaleTime().range([0, 430]);
   const y = d3.scaleLinear().range([210, 0]);
   d3.axisLeft().scale(x);
   d3.axisBottom().scale(y);
   x.domain(d3.extent(this.data, (d, i) => i));
   y.domain([0, d3.max(this.data, d => d)]);
   return { x, y };
  },
  calculatePath() {
   const scale = this.getScales();
   const path = d3.line()
    .x((d, i) => scale.x(i))
    .y(d => scale.y(d));
   this.line = path(this.data);
  },
 },
};
</script>
<style lang="sass" scoped>
svg
 margin: 25px;
path
 fill: none
 stroke: #76BF8A
 stroke-width: 3px
</style>

非常酷,即使它没有公开任何属性并且数据是硬编码的,它很好地将视图从逻辑中分离出来,并且使用Vue钩子,方法和data对象,现象和上图一样的。

总结

以上所述是小编给大家介绍的在Vue项目中使用d3.js的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
基于jQuery的倒计时实现代码
May 30 Javascript
javascript定时变换图片实例代码
Mar 17 Javascript
前台js调用后台方法示例
Dec 02 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
Mar 28 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
ES6中字符串string常用的新增方法小结
Nov 07 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
ant design实现圈选功能
Dec 17 Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
详解ajax的data参数错误导致页面崩溃
Apr 30 #Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 #Javascript
JS实现的缓冲运动效果示例
Apr 30 #Javascript
Vue波纹按钮组件制作
Apr 30 #Javascript
学习JS中的DOM节点以及操作
Apr 30 #Javascript
WebSocket的通信过程与实现方法详解
Apr 29 #Javascript
jQuery实现遍历XML节点和属性的方法示例
Apr 29 #jQuery
You might like
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
vue实现通讯录功能
2018/07/14 Javascript
详解如何运行vue项目
2019/04/15 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
python实现web方式logview的方法
2015/08/10 Python
python实现日常记账本小程序
2018/03/10 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
家庭户外服装:Hawkshead
2017/11/02 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
学生宿舍管理制度
2014/01/30 职场文书
企业总经理职责
2014/02/02 职场文书
业务员自荐信范文
2014/04/20 职场文书
网络营销策划方案
2014/06/04 职场文书
企业战略合作意向书
2015/05/08 职场文书
2015年中秋寄语
2015/07/31 职场文书
导游词之千岛湖
2019/09/23 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技