国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3.0 + D3.js 實(shí)現(xiàn)拓?fù)淅L圖

這篇具有很好參考價(jià)值的文章主要介紹了vue3.0 + D3.js 實(shí)現(xiàn)拓?fù)淅L圖。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

vue 拓?fù)鋱D組件,javascript,vue.js,前端

?

1. 首先,在項(xiàng)目中安裝 D3.js 和 Vue 3.0:

npm install d3@^7.0.0
npm install vue@^3.0.0

2. Vue組件中引入 D3.js

import * as d3 from 'd3';

3.?在 Vue 組件中定義一個(gè) data 對(duì)象,用于存儲(chǔ)拓?fù)浣Y(jié)構(gòu)的節(jié)點(diǎn)和邊:

data() {
  return {
    nodes: [
      {id: 1, name: 'Node 1'},
      {id: 2, name: 'Node 2'},
      {id: 3, name: 'Node 3'}
    ],
    links: [
      {source: 1, target: 2},
      {source: 1, target: 3}
    ]
  }
}

4.?在 Vue 組件的 mounted 生命周期中使用 D3.js 繪制拓?fù)浣Y(jié)構(gòu):

mounted() {
  const svg = d3.select('#topology');
  const width = svg.attr('width');
  const height = svg.attr('height');

  const simulation = d3.forceSimulation(this.nodes)
    .force('link', d3.forceLink(this.links).id(d => d.id))
    .force('charge', d3.forceManyBody())
    .force('center', d3.forceCenter(width / 2, height / 2));

  const link = svg.selectAll('line')
    .data(this.links)
    .enter()
    .append('line')
    .attr('stroke', '#ccc')
    .attr('stroke-width', 1);

  const node = svg.selectAll('circle')
    .data(this.nodes)
    .enter()
    .append('circle')
    .attr('r', 10)
    .attr('fill', 'blue')
    .call(d3.drag()
      .on('start', dragstarted)
      .on('drag', dragged)
      .on('end', dragended));

  node.append('title')
    .text(d => d.name);

  simulation.on('tick', () => {
    link
      .attr('x1', d => d.source.x)
      .attr('y1', d => d.source.y)
      .attr('x2', d => d.target.x)
      .attr('y2', d => d.target.y);

    node
      .attr('cx', d => d.x)
      .attr('cy', d => d.y);
  });

  function dragstarted(event, d) {
    if (!event.active) simulation.alphaTarget(0.3).restart();
    d.fx = d.x;
    d.fy = d.y;
  }

  function dragged(event, d) {
    d.fx = event.x;
    d.fy = event.y;
  }

  function dragended(event, d) {
    if (!event.active) simulation.alphaTarget(0);
    d.fx = null;
    d.fy = null;
  }
}

5.?在 Vue 組件的 template 中添加一個(gè) SVG 元素用于顯示拓?fù)浣Y(jié)構(gòu):

<template>
  <div>
    <svg id="topology" width="600" height="400"></svg>
  </div>
</template>

?完整代碼實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-648072.html

<template>
  <div>
    <svg id="topology" width="600" height="400"></svg>
  </div>
</template>

<script>
import * as d3 from 'd3';

export default {
  name: "topology",
  data() {
    return {
      nodes: [
        {id: 1, name: 'Node 1'},
        {id: 2, name: 'Node 2'},
        {id: 3, name: 'Node 3'},
        {id: 4, name: 'Node 4'}
      ],
      links: [
        {source: 1, target: 2},
        {source: 1, target: 3},
        {source: 1, target: 4}
      ]
    }
  },
  mounted() {
    const svg = d3.select('#topology');
    const width = svg.attr('width');
    const height = svg.attr('height');

    const simulation = d3.forceSimulation(this.nodes)
        .force('link', d3.forceLink(this.links).id(d => d.id).distance(150))
        .force('charge', d3.forceManyBody())
        .force('center', d3.forceCenter(width / 2, height / 2));

    const link = svg.selectAll('line')
        .data(this.links)
        .enter()
        .append('line')
        .attr('stroke', '#ccc')
        .attr('stroke-width', 1);

    const node = svg.selectAll('circle')
        .data(this.nodes)
        .enter()
        .append('circle')
        .attr('r', 10)
        .attr('fill', 'red')
        .call(d3.drag()
            .on('start', dragstarted)
            .on('drag', dragged)
            .on('end', dragended));

    const label = svg.selectAll('.label')
        .data(this.nodes)
        .enter()
        .append('text')
        .attr('class', "label")
        .text(function (d) {return d.name;})
        .attr("dx", 12)
        .attr("dy", ".35em");

    node.append('title')
        .text(d => d.name);

    simulation.on('tick', () => {
      link
          .attr('x1', d => d.source.x)
          .attr('y1', d => d.source.y)
          .attr('x2', d => d.target.x)
          .attr('y2', d => d.target.y);

      node
          .attr('cx', d => d.x)
          .attr('cy', d => d.y);
      label
          .attr('x', function (d) {return d.x;})
          .attr('y', function (d) {return d.y;});
    });

    function dragstarted(event, d) {
      if (!event.active) simulation.alphaTarget(0.1).restart();
      d.fx = d.x;
      d.fy = d.y;
    }

    function dragged(event, d) {
      d.fx = event.x;
      d.fy = event.y;
    }

    function dragended(event, d) {
      if (!event.active) simulation.alphaTarget(0);
      d.fx = null;
      d.fy = null;
    }
  }
}
</script>

到了這里,關(guān)于vue3.0 + D3.js 實(shí)現(xiàn)拓?fù)淅L圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于SSL VPN技術(shù)的中小企業(yè)網(wǎng)絡(luò)接入設(shè)計(jì)與實(shí)現(xiàn)(完整文檔+思科拓?fù)鋱D)

    基于SSL VPN技術(shù)的中小企業(yè)網(wǎng)絡(luò)接入設(shè)計(jì)與實(shí)現(xiàn)(完整文檔+思科拓?fù)鋱D)

    大家好,我是小華學(xué)長(zhǎng),一名計(jì)算機(jī)領(lǐng)域的博主。經(jīng)過多年的學(xué)習(xí)和實(shí)踐,我積累了豐富的計(jì)算機(jī)知識(shí)和經(jīng)驗(yàn),在這里我想與大家分享我的學(xué)習(xí)心得和技巧,幫助你成為更好的程序員。 作為一名計(jì)算機(jī)博主,我一直專注于編程、算法、軟件開發(fā)等領(lǐng)域,在這些方面積累了大量

    2024年02月04日
    瀏覽(25)
  • 基于靜態(tài)NAT的中小企業(yè)服務(wù)器網(wǎng)絡(luò)端口映射與實(shí)現(xiàn)(完整文檔+思科拓?fù)鋱D)

    基于靜態(tài)NAT的中小企業(yè)服務(wù)器網(wǎng)絡(luò)端口映射與實(shí)現(xiàn)(完整文檔+思科拓?fù)鋱D)

    大家好,我是小華學(xué)長(zhǎng),一名計(jì)算機(jī)領(lǐng)域的博主。經(jīng)過多年的學(xué)習(xí)和實(shí)踐,我積累了豐富的計(jì)算機(jī)知識(shí)和經(jīng)驗(yàn),在這里我想與大家分享我的學(xué)習(xí)心得和技巧,幫助你成為更好的程序員。 作為一名計(jì)算機(jī)博主,我一直專注于編程、算法、軟件開發(fā)等領(lǐng)域,在這些方面積累了大量

    2024年02月04日
    瀏覽(23)
  • 快速讀懂網(wǎng)絡(luò)拓?fù)鋱D

    快速讀懂網(wǎng)絡(luò)拓?fù)鋱D

    簡(jiǎn)介 總線型拓?fù)涫遣捎脝胃鶄鬏斪鳛楣灿玫膫鬏斀橘|(zhì),將網(wǎng)絡(luò)中所有的計(jì)算機(jī)通過相應(yīng)的硬件接口和電纜直接連接到這根共享的總線上。使用總線型拓?fù)浣Y(jié)構(gòu)需解決的是確保端用戶使用媒體發(fā)送數(shù)據(jù)時(shí)不能出現(xiàn)沖突。 優(yōu)點(diǎn) (1)網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,易于網(wǎng)絡(luò)擴(kuò)展; (2)設(shè)備少、造

    2024年02月07日
    瀏覽(23)
  • 淺談Flink架構(gòu)及拓?fù)鋱D

    淺談Flink架構(gòu)及拓?fù)鋱D

    聲明 : 本文是博主閱讀 云邪(Jark)博客 整理后的筆記,如有侵權(quán),可聯(lián)系博主刪除。 本文參考文章如下: https://wuchong.me/blog/2016/05/03/flink-internals-overview/ https://wuchong.me/blog/2016/05/04/flink-internal-how-to-build-streamgraph/ https://wuchong.me/blog/2016/05/10/flink-internals-how-to-build-jobgraph/ http

    2024年01月25日
    瀏覽(25)
  • 最最簡(jiǎn)單的ensp拓?fù)鋱D

    最最簡(jiǎn)單的ensp拓?fù)鋱D

    拓?fù)鋱D如下?選擇兩個(gè)PC和一個(gè)路由器 ? ?PC1配置如下: ? PC2配置如下: 配置完成后打開路由器對(duì)端口G0/0/0進(jìn)行配置: ? ? 再對(duì)端口G0/0/1進(jìn)行配置: ? 配置完成,打開PC1在命令行中pingPC2: ? 打開PC2在命令行中pingPC1: ?

    2024年02月12日
    瀏覽(16)
  • 醫(yī)院網(wǎng)絡(luò)設(shè)計(jì)(完整文檔+思科拓?fù)鋱D)

    醫(yī)院網(wǎng)絡(luò)設(shè)計(jì)(完整文檔+思科拓?fù)鋱D)

    大家好,我是小華學(xué)長(zhǎng),一名計(jì)算機(jī)領(lǐng)域的博主。經(jīng)過多年的學(xué)習(xí)和實(shí)踐,我積累了豐富的計(jì)算機(jī)知識(shí)和經(jīng)驗(yàn),在這里我想與大家分享我的學(xué)習(xí)心得和技巧,幫助你成為更好的程序員。 作為一名計(jì)算機(jī)博主,我一直專注于編程、算法、軟件開發(fā)等領(lǐng)域,在這些方面積累了大量

    2024年02月07日
    瀏覽(17)
  • 住宅小區(qū)的拓?fù)湟?guī)劃與網(wǎng)絡(luò)設(shè)計(jì)(完整文檔+ensp拓?fù)鋱D)

    住宅小區(qū)的拓?fù)湟?guī)劃與網(wǎng)絡(luò)設(shè)計(jì)(完整文檔+ensp拓?fù)鋱D)

    大家好,我是小華學(xué)長(zhǎng),一名計(jì)算機(jī)領(lǐng)域的博主。經(jīng)過多年的學(xué)習(xí)和實(shí)踐,我積累了豐富的計(jì)算機(jī)知識(shí)和經(jīng)驗(yàn),在這里我想與大家分享我的學(xué)習(xí)心得和技巧,幫助你成為更好的程序員。 作為一名計(jì)算機(jī)博主,我一直專注于編程、算法、軟件開發(fā)等領(lǐng)域,在這些方面積累了大量

    2024年02月04日
    瀏覽(34)
  • ENSP安裝以及簡(jiǎn)單配置一個(gè)拓?fù)鋱D

    ENSP安裝以及簡(jiǎn)單配置一個(gè)拓?fù)鋱D

    ENSP學(xué)習(xí)心得 eNSP軟件安裝 ???安裝eNSP之前必須先安裝以下三個(gè)插件: VirtualBox WinPcap Wireshack eNSP作為模擬器主體,需要對(duì)應(yīng)版本的VirtualBox和WinPcap提供虛擬環(huán)境,Wireshack用于實(shí)驗(yàn)當(dāng)中測(cè)試抓取數(shù)據(jù)包使用。 安裝好這三個(gè)插件,只需要點(diǎn)下一步選擇好對(duì)應(yīng)的安裝位置即可,然后

    2024年02月11日
    瀏覽(18)
  • threejs 3d網(wǎng)絡(luò)設(shè)備拓?fù)鋱D繪制示例

    threejs 3d網(wǎng)絡(luò)設(shè)備拓?fù)鋱D繪制示例

    技能點(diǎn):threejs,Vue,canvas,幾何數(shù)學(xué)。 展示網(wǎng)站:http://jstopo.top 模型上方圖標(biāo)貼圖 canvas文字貼圖

    2024年02月15日
    瀏覽(55)
  • 一個(gè)小時(shí)學(xué)會(huì)畫網(wǎng)絡(luò)拓?fù)鋱D(附標(biāo)準(zhǔn)素材)

    一個(gè)小時(shí)學(xué)會(huì)畫網(wǎng)絡(luò)拓?fù)鋱D(附標(biāo)準(zhǔn)素材)

    一,常見的網(wǎng)絡(luò)拓?fù)鋱D圖標(biāo) 二,核心交換機(jī),匯聚交換機(jī),接入交換機(jī)的區(qū)別? 三,核心交換機(jī),匯聚交換機(jī),接入交換機(jī)如何使用? 一、核心層交換機(jī)和匯聚層交換機(jī)區(qū)別 1、功能區(qū)別 2、性能區(qū)別 核心層交換機(jī)是三層交換機(jī),高速轉(zhuǎn)發(fā),有大容量接口帶寬(比如萬兆接口),較

    2023年04月21日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包