最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Vue項(xiàng)目中使用d3.js的實(shí)例代碼

 更新時(shí)間:2018年05月01日 08:34:40   作者:歸去來(lái)兮-不如去兮  
這篇文章主要介紹了在Vue項(xiàng)目中使用d3.js的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值價(jià)值,需要的朋友可以參考下

之前寫(xiě)一個(gè) Demo里面 有些東西要使用d3實(shí)現(xiàn)一些效果 但是在很多論壇找資源都找不到可以在Vue里面使用D3.js的方法,npm 上面的D3相對(duì)來(lái)說(shuō) 可以說(shuō)是很不人性化了 完全沒(méi)有說(shuō) 在webpack上怎么使用D3.js

最后折騰很久 看到某位外國(guó)大佬 看他的案例 成功的實(shí)現(xiàn)了在Vue項(xiàng)目里面實(shí)現(xiàn)D3的使用

首先安裝

npm install d3 --save-dev

以防萬(wàn)一,然后看package.json

安裝完成

在我們開(kāi)始之前,讓我們渲染一個(gè)Vue組件,它使用常規(guī)的D3 DOM操作呈現(xiàn)一個(gè)簡(jiǎn)單的折線(xiàn)圖:

<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>

代碼簡(jiǎn)單易懂,但這僅僅是一個(gè)基本的例子。因?yàn)槲覀儧](méi)有使用模板,所以需要更多操作和計(jì)算的更復(fù)雜的可視化會(huì)掩蓋組件的設(shè)計(jì)和邏輯。上述方法的另一個(gè)警告是,我們不能使用scopedCSS 的屬性,因?yàn)镈3會(huì)動(dòng)態(tài)地向DOM添加元素。

可以使用比較奇怪,但是代碼比較優(yōu)雅的方式去實(shí)現(xiàn)

<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>

非??幔词顾鼪](méi)有公開(kāi)任何屬性并且數(shù)據(jù)是硬編碼的,它很好地將視圖從邏輯中分離出來(lái),并且使用Vue鉤子,方法和data對(duì)象,現(xiàn)象和上圖一樣的。

總結(jié)

以上所述是小編給大家介紹的在Vue項(xiàng)目中使用d3.js的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • 一文輕松理解Vuex

    一文輕松理解Vuex

    這篇文章主要介紹了Vuex及其使用方法,感興趣的同學(xué),可以參考下
    2021-04-04
  • 在Vue 中實(shí)現(xiàn)循環(huán)渲染多個(gè)相同echarts圖表

    在Vue 中實(shí)現(xiàn)循環(huán)渲染多個(gè)相同echarts圖表

    這篇文章主要介紹了在Vue 中實(shí)現(xiàn)循環(huán)渲染多個(gè)相同echarts圖表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • vue?3.0?vue.config.js文件常用配置方式

    vue?3.0?vue.config.js文件常用配置方式

    這篇文章主要介紹了vue?3.0?vue.config.js文件常用配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue 設(shè)置axios請(qǐng)求格式為form-data的操作步驟

    Vue 設(shè)置axios請(qǐng)求格式為form-data的操作步驟

    今天小編就為大家分享一篇Vue 設(shè)置axios請(qǐng)求格式為form-data的操作步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 解決vue?eslint開(kāi)發(fā)嚴(yán)格模式警告錯(cuò)誤的問(wèn)題

    解決vue?eslint開(kāi)發(fā)嚴(yán)格模式警告錯(cuò)誤的問(wèn)題

    這篇文章主要介紹了解決vue?eslint開(kāi)發(fā)嚴(yán)格模式警告錯(cuò)誤的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • VSCode使React?Vue代碼調(diào)試變得更爽

    VSCode使React?Vue代碼調(diào)試變得更爽

    這篇文章主要為大家介紹了VSCode使React?Vue代碼調(diào)試變得更爽的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • webpack搭建vue 項(xiàng)目的步驟

    webpack搭建vue 項(xiàng)目的步驟

    這篇文章主要介紹了webpack搭建vue 項(xiàng)目的步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法

    webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法

    下面小編就為大家分享一篇webpack項(xiàng)目調(diào)試以及獨(dú)立打包配置文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件

    vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件

    這篇文章主要為大家詳細(xì)介紹了Vue2.0+SVG實(shí)現(xiàn)音樂(lè)播放圓形進(jìn)度條組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解Vue適時(shí)清理keepalive緩存方案

    詳解Vue適時(shí)清理keepalive緩存方案

    說(shuō)到Vue緩存,我們肯定首先選擇官方提供的緩存方案keep-alive,本文主要介紹了詳解Vue適時(shí)清理keepalive緩存方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

望江县| 大丰市| 澄迈县| 德格县| 福贡县| 宁波市| 镇沅| 理塘县| 台湾省| 北碚区| 马关县| 安新县| 周宁县| 宝应县| 兰溪市| 平湖市| 乐东| 沅陵县| 石渠县| 饶河县| 南投市| 平乡县| 从化市| 大竹县| 资兴市| 繁昌县| 额尔古纳市| 四会市| 揭东县| 昌都县| 都安| 清新县| 濮阳县| 离岛区| 峨眉山市| 修文县| 上虞市| 金寨县| 长顺县| 任丘市| 灌南县|