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

使用Rough.js H5绘制手绘风格的图形 Rough.js是一个基于Canvas的JavaScript库,它可以帮助我们在网页上创建手绘风格的图形。通过使用Rough.js,我们可以为我们的网页添加一些独特而有趣的视觉效果。在上面的示例中,我们先获取了Canvas元素的引用,并创建了一个RoughCanvas对象。以上只是Rough.js库提供的一些基本绘图方法的示例,实际上,Rough.js还提供了许多其他有趣的功能和选项,例如绘制文本、添加阴影效果等。现在,我们可以使用Rough.js的绘图方法来创建不同类型的手绘风格图形。 阅读详情

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,
  }))
}

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

总结与展望

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

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

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

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

    更多组件:



    获取更多Echos

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

    项目地址:传送门

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

扫码加入群聊

基于画布的手绘风格图形库 Rough.js 是一个轻量的(大约8k),基于Canvas的可以绘制出粗略的手绘风格库。提供绘制线条、曲线、弧线、多边形、圆形和椭圆的基础能力,同时支持绘制SVG路径。 阅读详情

相关推荐

factory机制-重载(一)

这里写自定义目录标题1.SystemVerilog对重载的支持2.对约束的重载3.factory 机制式的重载4.重载的方式和种类5.factory机制的调试 1.SystemVerilog对重载的支持 SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。 重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。 2.对约束的重载 在测试一个DUT时

sinat_41774721的博客 2960

Rough.js 常见问题解决方案

Rough.js 常见问题解决方案 【免费下载链接】rough Create graphics with a hand-drawn, sketchy, appearance 项目地址: https://gitcode.com/gh...

gitblog_00822的博客 739

MPU6050 加速度计和陀螺仪传感器与 Arduino 的接口

虽然该模型并不能准确代表现实世界中加速度计传感器的构建方式,但它通常有助于理解为什么加速度计的输出信号通常以 ±g 为单位指定,或者为什么加速度计在静止时在 z 轴上的读数为 1g,或者在不同方向上您可以期望得到什么样的加速度计读数。该模块的核心是低功耗、低成本的 6 轴运动跟踪芯片 MPU6050,它将 3 轴陀螺仪、3 轴加速度计和数字运动处理器 (DMP) 集成到一个 4mm x 4mm 的微型芯片中。小时候,科学博览会上的陀螺仪总是让我们感到惊讶,因为它们以奇怪的方式移动,甚至似乎违背了重力。

sxstj的博客 9933

Rough.js:创建手绘、草图外观的图形

是一个小型的(

前端全栈开发者 977

KEITHLEY 2182A + 6220/6221 系列测试系统软件

6221型与2182A型相结合,是业界最完整的差分电导测量解决方案

业余程序员小徐的博客 2989

Air780E模组AT指令实战:5分钟搞定MQTT连接EMQX服务器(附完整代码)

本文详细介绍了如何使用Air780E 4G模组通过AT指令快速连接MQTT服务器。从硬件接线、网络注册到MQTT连接配置,提供了完整的实战步骤和代码示例,帮助开发者快速实现物联网设备的数据上报与远程通信。

wdx012345的博客 743

手把手教你实现手绘风格图形

Rough.js是一个手绘风格的图形库,提供了一些基本图形的绘制能力,比如: 虽然笔者是个糙汉子,但是对这种可爱的东西都没啥抵抗力,这个库的使用本身很简单,没什么好说的,但是它只有绘制能力,没有交互能力,所以使用场景有限,先来用它画个示例图形: import rough from 'roughjs/bundled/rough.esm.js' this.rc = rough.canvas(this.$refs.canvas) this.rc.rectangle(100, 150, 300

sinat_33488770的博客 611

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4205

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

开发这段代码是一个学习使用 Rough.js 创建动态可视化的过程。该代码可以扩展和优化,例如:添加对更多数据源的支持实现更复杂的交互功能,例如节点选择和过滤探索使用 Rough.js 的其他毛边效果和样式选项更多组件:获取更多Echos本文由ScriptEcho平台提供技术支持传送门。

ScriptEcho的博客 654

金蝶云星空v8.0私有化部署与cpolar内网穿透:构建企业级远程ERP访问通道

本文详细介绍了金蝶云星空v8.0企业版的私有化部署流程与cpolar内网穿透技术,帮助企业构建安全高效的远程ERP访问通道。从系统环境准备、SQL Server配置到内网穿透安全加固,提供全流程实战指导,助力企业实现本地部署与远程办公的无缝衔接。

weixin_28736335的博客 376

LeRobot X-VLA:首个适用于任意机器人、任意任务的软提示机器人基础模型

X-VLA是一种基于软提示的视觉-语言-动作模型,通过可学习嵌入向量编码不同机器人配置,实现跨平台统一控制。该框架采用两阶段训练:先在29万次多平台任务中学习通用策略,再通过微调少量参数(仅1%)适配新机器人。实验表明,0.9B参数的X-VLA在6个仿真和3个真实平台上表现优异,如LIBERO任务达93%成功率,布料折叠任务100%完成。其核心创新是将硬件差异视为"任务",用软提示引导Transformer处理异构数据,为机器人基础模型提供可扩展方案。

2506_90492529的博客 1241

Excalidraw支持区块链节点网络图

Excalidraw凭借手绘风格与实时协作能力,正成为分布式系统设计的新范式。结合AI语义解析,只需一句自然语言即可生成区块链网络初始拓扑,大幅加速原型设计。其开放架构支持深度集成,让架构图从静态文档变为动态协作空间,适用于联盟链、教学与DAO治理等场景。

weixin_35835018的博客 1018

ArcGIS Pro符号化教程

本文详细介绍了ArcGIS Pro的软件设置和符号化操作步骤。主要包括:1)设置默认工程目录和关闭地图自动加载;2)创建新工程的基本流程;3)点要素的单一符号化方法,包括样式修改和图层调整;4)图表符号显示过滤器的使用,涉及字段添加、图表类型选择和背景设置。文章还提供了操作截图和数据下载链接,适合GIS初学者学习ArcGIS Pro的基础符号化操作。

WwLK123的博客 549

颠覆性实时图表引擎架构解析:重新定义代码驱动可视化工作流

在技术架构设计与文档化日益复杂的今天,可视化表达已成为架构师与开发者沟通的核心桥梁。传统图表工具虽然功能丰富,但往往陷入界面操作繁琐、协作效率低下的困境。Mermaid Live Editor以其独特的代码驱动架构,通过实时渲染引擎与状态管理系统的深度集成,为技术团队提供了从代码到专业图表的无缝转换体验。这款基于Svelte Kit构建的现代化Web应用,不仅实现了毫秒级实时预览,更通过模块化设计

gitblog_01057的博客 476

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Excalidraw深度学习神经网络结构图绘制

Excalidraw以手绘风格和协作能力革新了神经网络图的绘制方式,结合程序化生成与AI辅助,让模型表达更高效、直观。其开放的数据格式支持自动化集成,适用于教学、研发与团队协作,成为技术沟通的新语言。

weixin_36427956的博客 1091

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Excalidraw网络拓扑图绘制最佳实践

Excalidraw通过手绘风格和CRDT协作机制,提升技术团队在绘制网络拓扑图时的沟通效率。结合颜色编码、语义连线与容器分组,强化信息表达。支持与IaC集成,实现架构图的自动化更新与版本控制,让图纸成为持续演进的协作中枢。

weixin_29138345的博客 702

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

5分钟上手Rough.js:打造惊艳手绘风格Canvas与SVG图形的终极指南

Rough.js是一款强大的JavaScript库,能够帮助开发者轻松创建具有手绘风格的图形。无论是Canvas还是SVG,Rough.js都能为你的项目增添独特的艺术感,让呆板的几何图形瞬间变得生动有趣。 ## 🎨 什么是Rough.js? Rough.js是一个轻量级的开源库,它通过模拟手绘笔触的不规则性,为标准几何图形添加自然的"粗糙感"。项目核心代码位于[src/rough.ts](

gitblog_01088的博客 539

html5 手绘效果,浅谈基于Canvas的手绘风格图形库Rough.js

前言推荐一个基于canvas的手绘风格图形js库。rough.jsrough.js是一个轻量的(大约8k),基于canvas的可以绘制出粗略的手绘风格库。提供绘制线条、曲线、弧线、多边形、圆形和椭圆的基础能力,同时支持绘制svg路径。github:安装下载链接npmnpm install --save roughjs使用方法const rc = rough.canvas(document.gete...

weixin_36125921的博客 617

探索创新的绘图库:Rough.js

探索创新的绘图库:Rough.js 【免费下载链接】rough 项目地址: https://gitcode.com/gh_mirrors/rou/rough 是一个轻量级且富有创意的JavaScript库,...

gitblog_00025的博客 436

30分钟上手Rough.js:让你的Web图形秒变手绘风格的实用指南

你是否厌倦了网页上过于完美的几何图形?是否想让数据可视化更具温度和个性?Rough.js正是解决这一痛点的轻量级图形库,只需几行代码就能将生硬的线条转化为富有艺术感的手绘效果。本文将带你从安装到高级定制,全面掌握这个神奇库的使用方法,读完后你将能够:快速集成Rough.js到现有项目、定制多种手绘风格、解决常见兼容性问题,并了解如何扩展其填充模式。 ## 初识Rough.js:小而美的手绘风格引...

gitblog_00944的博客 721

探索Rough.js:手绘风格图形的魔法库

探索Rough.js:手绘风格图形的魔法库 【免费下载链接】rough Create graphics with a hand-drawn, sketchy, appearance 项目地址: https://gitcode.com/gh_mirrors/ro/r...

gitblog_00047的博客 1160

爆火开源库!20K星标,一键让网页设计秒变手绘风

今天必须给大伙说说一个超有意思的开源库,在GitHub上已经斩获20K星标啦,它能轻松给网页设计加上手绘风格的“滤镜”,让页面瞬间告别千篇一律,充满艺术感!

Java潘老师 1177

Rough.js入门指南:手绘风格图形库的全面介绍

Rough.js入门指南:手绘风格图形库的全面介绍 【免费下载链接】rough Create graphics with a hand-drawn, sketchy, appearance 项目地址: https://gitcod...

gitblog_00100的博客 487

手绘风格图形库Rough.js:从源码到生产环境的完整构建指南

Rough.js是一个轻量级(小于9kB)的图形库,让你能够以**手绘风格**、**素描般**的效果绘制图形。该库支持Canvas和SVG两种渲染方式,提供线条、曲线、多边形、圆形等多种基本图形绘制功能。 ## 🛠️ 项目环境准备与依赖安装 在开始构建Rough.js之前,首先需要克隆项目仓库: ```bash git clone https://gitcode.com/gh_mirror

gitblog_01042的博客 1129

推荐开源项目:Rough.js - 手绘风格的图形新纪元

推荐开源项目:Rough.js - 手绘风格的图形新纪元 【免费下载链接】rough Create graphics with a hand-drawn, sketchy, appearance 项目地址: https://git...

gitblog_00746的博客 443

手绘风格渲染终极指南:Rough.js核心功能深度解析

Rough.js是一款强大的JavaScript库,让开发者能够轻松创建具有手绘风格的图形元素。无论是网页设计、数据可视化还是交互式应用,Rough.js都能为你的项目增添独特的艺术感和个性魅力。通过简单的API,你可以快速实现各种手绘效果,让普通的图形瞬间变得生动有趣。 ## 什么是Rough.js? Rough.js是一个开源的JavaScript库,它允许你在网页上创建看起来像是手绘的图

gitblog_00286的博客 1141
上一篇: 基于 Rough.js 的 Vue 散点图绘制
下一篇: 使用 Rough.js 创建动态水平条形图
ScriptEcho
博客等级 码龄3年 1304粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值