用Vue3和Rough.js绘制一个粗糙的3D条形图

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

Alt

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

项目地址:传送门

使用 Rough.js 和 D3.js 绘制粗糙手写风格条形图

应用场景

该代码适用于需要在 Web 应用程序中创建具有粗糙手写风格的条形图的情况。它可以用于数据可视化、信息图表或任何需要以独特和有吸引力的方式呈现数据的场景。

基本功能

此代码段利用 Rough.js 和 D3.js 库,使用粗糙手写风格的线条和形状创建条形图。它包括以下功能:

  • 使用 D3.js 定义数据、比例和坐标轴。
  • 使用 Rough.js 绘制粗糙的条形,具有可配置的粗糙度和填充重量。
  • 使用 D3.js 添加标签和标题。

功能实现步骤及关键代码分析

1. 加载外部脚本

const jsUrls = [
  'https://cdnjs.cloudflare.com/ajax/libs/d3/5.15.0/d3.min.js',
  'https://cdnjs.cloudflare.com/ajax/libs/rough.js/3.1.0/rough.js',
]
await Promise.all(jsUrls.map((jsUrl) => loadJavascript(jsUrl)))

此代码加载 D3.js 和 Rough.js 库,这是创建粗糙条形图所必需的。

2. 定义数据和比例

const data = [
  { name: 'Fruit', value: 10 },
  { name: 'Meat', value: 8 },
  { name: 'Vegetable', value: 15 },
]

const x = d3
  .scaleBand()
  .range([0, width - margin.left - margin.right])
  .domain(data.map((d) => d.name))
  .padding(0.25)

const y = d3
  .scaleLinear()
  .range([height - margin.top - margin.bottom, 0])
  .domain([0, d3.max(data, (d) => d.value)])

此代码定义了要绘制的条形图的数据,并创建了 x 和 y 比例尺,用于将数据值映射到条形图的坐标。

3. 绘制粗糙的条形

data.forEach((d) => {
  const rect = roughSvg.rectangle(
    x(d.name),
    y(d.value),
    x.bandwidth(),
    height - margin.top - margin.bottom - y(d.value),
    {
      fill: 'dodgerblue',
      roughness: 2,
      fillWeight: 1.1,
    },
  )

  chart.node().appendChild(rect)
})

此代码遍历数据并使用 Rough.js 的 rectangle 方法创建粗糙的条形。它设置了条形的颜色、粗糙度和填充重量等属性。

4. 添加标签和标题

chart
  .selectAll('.label')
  .data(data)
  .join('text')
  .attr('class', 'label')
  .attr(
    'transform',
    (d) => `translate(${x(d.name) + x.bandwidth() / 2}, ${y(d.value) - 10})`,
  )
  .attr('text-anchor', 'middle')
  .text((d) => d.value)

chart
  .selectAll('text')
  .attr('font-size', 22)
  .attr('font-family', 'Schoolbell, cursive, sans-serif')

此代码使用 D3.js 添加条形图上的标签和标题。它将标签放置在每个条形的上方,并设置了文本属性,例如字体大小和字体系列。

总结与展望

开发这段代码的过程让我对使用 Rough.js 和 D3.js 创建粗糙风格的数据可视化有了深入的了解。它展示了如何结合这两个库的优点来创建独特且引人注目的图表。

未来,该卡片功能可以扩展和优化,例如:

  • 添加交互性,允许用户悬停或单击条形以查看更多信息。

  • 探索不同的粗糙度和填充重量设置,以创建各种视觉效果。

  • 集成其他 Rough.js 形状,例如圆圈或多边形,以创建更复杂的图表。

    更多组件:

    在这里插入图片描述


    在这里插入图片描述

    获取更多Echos

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

    项目地址:传送门

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

扫码加入群聊

[pytorch]FixMatch代码详解(超详细) FixMatch代码详解-训练过程参数数据产生构建模型训练参数设置weight decay(权值衰减)学习率衰减(learning rate decay)指数移动平均(EMA)model训练过程运行结果 上一篇大概讲了数据加载的过程,这一篇更进一步,分析一下训练是怎样进行的 上一篇链接: [pytorch]FixMatch代码详解-数据加载 参数 所有的参数我都默认使用作者给出的例子: python train.py --dataset cifar10 --num-labeled 4000 --arch w 阅读详情

相关推荐

ZYNQ RFSoC 的DAC如何做到从 0到Fs频段 信号输出

之前一直没太了解 RFSoC 的DAC如何输出在 Fs/2 到 Fs 频率范围内的信号,例如 ZCU216中的 ZU49DR,其RF-DAC最大采样率是 9.85GSPS,如果想输出的信号中心频率在5.8G,它是如何有效输出在第二奈奎斯特区域范围的信号的。

weixin_44630490的博客 1551

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

是一个小型的(

前端全栈开发者 977

LangChain与SkillLite集成:AI Agent安全沙箱实践

在AI与自动化技术领域,安全沙箱是实现可信计算的核心机制。其原理是通过资源隔离与权限控制,构建受限的执行环境。技术价值在于平衡功能开放性与系统安全性,尤其适用于处理用户提交的非受信代码或敏感数据。典型应用场景包括AI插件系统、在线代码评测平台等。本文以LangChain框架与SkillLite沙箱的深度集成为例,详解如何通过命名空间隔离、cgroups限制等机制,为AI Agent赋予安全执行动态技能的能力。其中涉及的关键技术点包括Python运行时隔离、动态资源配额管理,以及如何防范Shell注入等常见攻

weixin_34189116的博客 405

rough set_Rough.js使用Canvas和SVG制作手绘图形

令人惊奇的是,浏览器内的SVG等动态元素已经使网络发展了很多。 您可以使用正确的库设计从自定义动画到HTML5游戏的所有内容。 Rough.js是值得测试的最新库之一 。 这是一个免费的图形生成脚本,当前处于beta中, 可用于canvas和SVG元素 。 您可以在代码中构建自定义图标,条形图以及几乎所有您想要的东西。 并且,最终结果具有华丽的手绘效果 。 另请阅读: 20个有用的...

cune1359的博客 462

1. 基于STM32的1.28寸圆形IPS屏(GC9A01)驱动移植实战:软件SPI与硬件SPI双方案详解

本文详细介绍了如何在STM32平台上为1.28寸圆形IPS屏(GC9A01驱动芯片)移植驱动程序,涵盖软件SPI与硬件SPI两种实现方案。内容从引脚定义、工程搭建、GPIO配置到SPI外设初始化逐步详解,并提供了完整的测试代码,帮助开发者根据项目需求(灵活性或性能)选择合适的通信方式,快速点亮屏幕并集成到智能手表等嵌入式项目中。

weixin_42300144的博客 203

【应用】什么是Azure?一文读懂微软云的核心逻辑与全球版图

作为微软的核心云计算服务平台,Azure不仅是数字化转型的引擎,更是全球企业在构建、扩展与优化IT基础设施时的首选平台。在这篇文章中,我们将深入探讨Azure云服务平台的各个方面,涵盖其核心优势、架构、功能、应用场景以及未来发展趋势。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1957

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

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

【DRAM存储器一】基本存储单元、阵列结构、读写原理

详述DRAM存储器存储单元、存储阵列结构和读写原理

highman110的博客 7256

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

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

gitblog_00047的博客 1160

SLAM 轨迹评估工具——EVO安装、使用介绍

evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。

u010196944的博客 1万+

openlayers全面教程306+【目录】

vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。

大剑师兰特的GIS世界 2万+

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

Autosar代码包初识 2 - 如何编译Vector包内Demo工程

Vetcor autosar代码包Demo工程编译,GreenHills,RH850,Autosar,Davinci COnfigurator

weixin_42412049的博客 5184

JavaScript手绘风格的图形库RoughJS使用指南

RoughJS是一个轻量级的JavaScript图形库(压缩后约9KB),可以让你在网页上绘制素描风格、手绘样式般的图形。RoughJS定义了绘制直线,曲线,圆弧,多边形,圆和椭圆的图元,同时它还支持绘制SVG路径。 这里是它的项目网站地址:https://roughjs.com/ RoughJS可以同时在Canvas和SVG上工作,这是一个非常实用的特性。 安装 最新的Ro...

645

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

gitblog_00025的博客 436

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

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

gitblog_00286的博客 1141

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SwiftWave 部署实战:从 Git 仓库到生产环境的完整流程指南

SwiftWave 是一个轻量级的自托管 PaaS 解决方案,让你能够在任何 VPS 上轻松部署和管理应用程序。作为你自己的 Heroku 和 Vercel 替代方案,SwiftWave 提供了完整的 Git 到生产环境的部署工作流。本文将带你了解如何使用 SwiftWave 实现从 Git 仓库到生产环境的完整部署流程,让你的应用快速上线运行 🚀。 ## 为什么选择 SwiftWave 进行

gitblog_00324的博客 994

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

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

ScriptEcho的博客 654

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

gitblog_00822的博客 739

vue3+ts 堆叠条形图

【代码】vue3+ts 堆叠条形图。

weixin_60906876的博客 275

如何用Vue3和ApexCharts打造引人注目的3D径向条形图

开发这段代码的过程让我深入了解了 ApexCharts 库的强大功能和 Vue.js 中图表组件的创建。掌握了 ApexCharts 库的选项和功能。学会了创建和配置可视化数据的交互式图表。增强了 Vue.js 应用程序的交互性和用户体验。添加动态数据加载和更新功能。探索使用多个数据序列创建更复杂的图表。整合交互式元素,例如工具提示和可单击区域。更多组件:获取更多Echos本文由ScriptEcho平台提供技术支持传送门。

ScriptEcho的博客 1051

Filmy核心功能详解:如何利用TMDB API打造专业级电影应用

Filmy是一款基于Material Design设计的专业电影应用,它利用TMDB(The Movie Database)API提供丰富的电影数据,为用户带来沉浸式的电影探索体验。无论是查看热门电影、了解详细剧情,还是观看预告片、发现相似影片,Filmy都能满足你对电影信息的各种需求。 ## 一、直观的电影分类浏览功能 Filmy将电影数据清晰地分为"热门"、"正在上映"和"即将上映"三个主

gitblog_00084的博客 506

如何为Parry贡献代码:从问题报告到Pull Request的完整流程

Parry是一个强大的Rust 2D和3D碰撞检测库,为开发者提供高效的几何计算解决方案。本文将详细介绍如何参与Parry项目贡献,从发现问题到提交代码的完整流程,帮助新手轻松入门开源贡献。 ## 贡献的多种方式 🚀 Parry项目欢迎各种形式的贡献,包括但不限于: - 报告程序缺陷(Bug) - 提交代码修复 - 修正文档错别字 - 改进项目文档 - 通过GitHub Sponsors进行

gitblog_01172的博客 977

如何用Rough.js与Excalidraw打造专业级手绘图表工具:完整指南

Rough.js是一个强大的JavaScript库,它能让你轻松创建具有手绘风格的图形,为数据可视化和图表设计带来独特的艺术感。本文将详细介绍如何使用Rough.js结合Excalidraw,从零开始构建一个功能完备的手绘图表工具,让你的数据展示既专业又富有创意。 ## 🎨 什么是Rough.js? Rough.js是一个轻量级的开源库,它通过模拟手绘的不完美线条和填充效果,为Web应用添加

gitblog_00950的博客 1026

RoughJs 1.0-实现的JavaScript 2.0的编译器(1)

RoughJs 目录Javascript简介(脚本,脚本语言的公共特性,)数据类型关键字定义变量,Json,数组全局对象,本地对象表达示运算 一元运算,位运算,bool运算,+-*/ 关系运算语句 if语句,迭代语句,break/continue,with语句,switch函数 E4X for Xml操作SVG操作 Javascript简介 根据Wiki的定义JavaScri...

dianrongjun2140的博客 211
上一篇: 用Vue3和Plotly.js打造一个3D曲面图
下一篇: 如何用Vue3和Plotly.js绘制交互式漏斗图
ScriptEcho
博客等级 码龄3年 1304粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值