使用 Rough.js 创建动态水平条形图

news2024/9/22 12:34:08

Alt

本文由ScriptEcho平台提供技术支持

项目地址:传送门

使用 Rough.js 创建动态可视化网络图

应用场景

Rough.js 是一个 JavaScript 库,它允许开发人员使用毛边风格创建可视化效果。该库适用于各种应用程序,例如:

  • 数据可视化
  • 地图绘制
  • 用户界面设计
  • 艺术和插图

代码基本功能

本代码演示了如何使用 Rough.js 创建一个动态可视化网络图。网络图由节点和边组成,其中节点表示数据点,边表示节点之间的连接。该代码允许用户交互式地探索网络,缩放和拖动节点以查看连接和数据。

功能实现步骤

1. 加载必要的库

首先,代码加载了必要的库,包括 D3.js 和 Rough.js。D3.js 用于处理数据和创建可视化效果,而 Rough.js 用于创建毛边风格的效果。

import { onMounted } from 'vue'
import { Network } from 'rough-viz'
2. 创建节点和边

接下来,代码创建了网络图的节点和边。节点使用 createNodes 函数创建,该函数生成具有随机半径的节点。边使用 createLinks 函数创建,该函数生成连接相邻节点的边。

const createNodes = (numNodes) => {
  return d3.range(numNodes).map(() => {
    // ...
  })
}

const createLinks = (numNodes) => {
  return d3.range(numNodes - 1).map((d, i) => ({
    // ...
  }))
}
3. 创建网络图

在加载库并创建数据之后,代码使用 Network 类创建了网络图。Network 类接受一个包含网络图配置的选项对象。

new Network({
  element: '#viz4',
  data: createNodes(20),
  links: createLinks(20),
  // ...
})
4. 配置网络图选项

Network 类允许用户配置各种选项,包括:

  • collision: 节点之间的最小距离
  • radiusExtent: 节点半径的范围
  • roughness: 毛边效果的粗糙度
  • fillStyle: 节点的填充样式
  • stroke: 节点的描边颜色
  • color: 节点的颜色
  • margin: 网络图周围的边距
5. 添加交互功能

代码还添加了交互功能,允许用户缩放和拖动节点。这使用 Vue.js 的 onMounted 钩子实现,该钩子在组件挂载时触发。

onMounted(async () => {
  // ...
  new Network({
    // ...
  })
})

关键代码分析

const loadJavascript = (jsUrl) => {
  return new Promise((resolve, reject) => {
    const script = document.createElement('script')
    // ...
    document.body.appendChild(script)
  })
}

此代码用于动态加载 JavaScript 库。它创建了一个 Promise,并在加载脚本后解析。

const createNodes = (numNodes) => {
  return d3.range(numNodes).map(() => {
    const randomValue = Math.random()
    // ...
    return {
      radius: multiplier * 5,
    }
  })
}

此代码创建具有随机半径的节点。multiplier 变量用于根据节点的随机值调整半径。

const createLinks = (numNodes) => {
  return d3.range(numNodes - 1).map((d, i) => ({
    source: i,
    target: i + 1,
  }))
}

此代码创建连接相邻节点的边。sourcetarget 属性指定边的源节点和目标节点。

总结与展望

开发这段代码是一个学习使用 Rough.js 创建动态可视化的过程。该代码可以扩展和优化,例如:

  • 添加对更多数据源的支持

  • 实现更复杂的交互功能,例如节点选择和过滤

  • 探索使用 Rough.js 的其他毛边效果和样式选项

    更多组件:



    获取更多Echos

    本文由ScriptEcho平台提供技术支持

    项目地址:传送门

    扫码加入AI生成前端微信讨论群:

扫码加入群聊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1972344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++11】解锁C++11新纪元:深入探索Lambda表达式的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C11右值引用 🌹🌹期待您的关注 🌹🌹 ❀C11 📒1. 可变参数模板…

.net # 检查 带有pdf xss

1.解决pdf含javasprct脚本动作,这里是验证pdf内部事件。相关pdf文件下载: 测试pdf文件 相关包 iTextSharp 5.5.13.4 iTextSharp using iTextSharp.text.pdf; using iTextSharp.text.pdf.parser;private Boolean IsPdfSafe(Stream stream){// PdfReader…

PyTorch+PyG实现图神经网络经典模型目录

前言 大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都…

洛谷 P1739 表达式括号匹配 题解

题目描述 假设一个表达式有英文字母(小写)、运算符(、-、*、/)和左右小(圆)括号构成,以 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配&#xff0c…

springboot农产品报价系统-计算机毕业设计源码37300

摘 要 本研究基于鸿蒙系统,设计开发了一款农产品报价系统小程序,旨在帮助商家与买家更便捷、高效地进行交易。该系统利用鸿蒙系统的优势,实现了跨平台应用程序的开发,同时利用定位技术和数据采集技术,为用户提供了个性…

RoboCom 2021 编程技能赛决赛 7-4 猛犸不上 Ban

7-4 猛犸不上 Ban 赛题 分数 30 作者 DAI, Longao 单位 杭州百腾教育科技有限公司 在一个名叫刀塔的国家里,有一只猛犸正在到处跑着,希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市,城市之间由 M 条道路互相连接&#xff…

【C语言】【数据结构】冒泡排序及优化

一、算法思想 冒泡排序是一种简单的排序算法。一次从前往后地走访待排序的元素序列被称为一趟,每一趟都会把相邻的两个元素的错误顺序交换,将当前趟次中最大或者最小的元素像“冒泡泡”一样冒到最后面,反复地走访元素序列,直到所有…

Maven 安装-从下载、安装、配置以及检查是否安装成功,最详细安装教程

以下内容参考:https://juejin.cn/post/6844903543711907848 原文标题:Maven入门,读完这篇就够了 作者:嘟嘟MD 链接:https://juejin.cn/post/6844903543711907848 来源:稀土掘金 ----- 注:所有流…

计算机组成原理——运算器ALU,移位操作

一、组合逻辑电路和时序逻辑电路 组合逻辑电路:其输出仅取决于当前输入组合,不依赖先前输出,不具备存储状态的能力 时序逻辑电路:其输出不仅取决于当前输入,还取决于先前的输出,具备存储状态的能力。 AL…

多 NodeJS 环境管理

前言 对于某个项目依赖特定版本的 NodeJS,或几个项目的 NodeJS 版本冲突时,需要在系统中安装多个版本的 NodeJS,这时可以使用一些工具来进行多个 NodeJS 的管理。 有很多类似的 NodeJS 管理工具,如 nvm, nvs, n 等,接…

【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线

更新日期:2024年7月31日。 Github源码:[点我获取源码] 索引 Deployment 轻量级资源部署管线使用 Deployment一、创建部署配置二、编辑部署配置三、正式开始资源部署步骤一:资源打包步骤二:资源版本构建步骤三:资源版本…

学习C语言第19天(练习题)

编程题 第一题 改数字 //改数字 int gaishuzi(int * input) {int sum 0;int i 0;while (*input){int bit* input% 10;if (bit % 2 1){sum 1 * pow(10, i);i;}else{sum 0* pow(10, i);i;}*input / 10;}return sum; } int main() {int input 0;scanf("%d&quo…

域气象-大气化学在线耦合模式(WRF/Chem)在大气环境中的应用

随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因…

嵌入式day17

尾插: 头删: 尾删: 双向链表: 循环链表: 内存泄漏(malloc 调用的节点需要手动清除) 清除: 头删效率更高,算法复杂度更低 共用体 共用体的成员,会共同占用相…

CX32L003F8P6T芯片解密程序破解

CX32L003F8P6T可替代N76E003 CX32L003是一款内嵌32位ARM Cortex-M0内核的超低功耗、Low Pin Count和宽电压工作范围(2.5V~5.5V)的微控制器,最高可运行在24MHz,内置32K/64K字节的嵌入式Flash,4K字节的SRAM,集成了12位1Msps高精度SA…

结构型设计模式:适配器/代理

结构型设计模式:适配器/代理 (qq.com)

软件测试——用例篇(下)

基于需求的设计⽅法 基于需求的设计⽅法也是总的设计测试⽤例的⽅法,在⼯作中, 我们需要参考需求⽂档/产品规格说明书来设计测试⽤例。测试⼈员接到需求之后, 要对需求进⾏分析和验证,从合理的需求中进⼀步分析细化需求&#x…

参加过奥运会的名人和一些几乎参加奥运会的名人 有很多是我们熟悉的人

Facebook创始人也参加过奥运会并获得名次 英国皇室安妮公主和伊丽莎白二世女王的外孙女扎拉廷德尔参加过奥运会 很多我们熟悉的演员也参加过奥运会的选拔 凯特琳詹纳、扎拉廷德尔、科迪辛普森、杰西卡斯普林斯汀 莱昂内尔梅西、迈克尔菲尔普斯、塞雷娜威廉姆斯和勒布朗詹姆斯…

MySQL —— 初始数据库

数据库概念 在学习数据库之前,大家保存数据要么是在程序运行期间,例如:在学习编程语言的时候,大家写过的管理系统,运用一些简单的数据结构(例如顺序表)来组织数据,可是程序一旦结束…

【图像处理】好莱坞电影里瞬间恢复模糊人像是如何实现的,是真实的技术吗?

好莱坞电影里瞬间恢复模糊人像是如何实现的,是真实的技术吗? 图片来源:论文《PULSE:Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models》 使用非常低分辨率照片和视频恢复人像高清照片的桥段&…