D3基础:绘制圆形、椭圆形、多边形、线、路径、矩形

news/2024/11/19 8:38:19/

在D3.js中,可以通过SVG元素来创建各种几何图形。以下是D3.js中常用的几何图形及其简单的创建方法:

在这里插入图片描述

1. 圆形 (Circle)

圆形是最基本的形状之一,可以通过<circle>标签来创建。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");svg.append("circle").attr("cx", 100) // 圆心的X坐标.attr("cy", 100) // 圆心的Y坐标.attr("r", 50)   // 半径.attr("fill", "blue"); // 颜色</script>
</body>
</html>

2. 椭圆 (Ellipse)

椭圆通过<ellipse>标签来创建,它允许设置不同的宽度和高度。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");svg.append("ellipse").attr("cx", 100) // 中心点的X坐标.attr("cy", 100) // 中心点的Y坐标.attr("rx", 80)  // 水平半径.attr("ry", 50)  // 垂直半径.attr("fill", "green"); // 颜色</script>
</body>
</html>

3. 矩形 (Rectangle)

矩形使用<rect>标签来创建,可以通过设置widthheight属性来调整其大小。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");svg.append("rect").attr("x", 50)   // 左上角的X坐标.attr("y", 50)   // 左上角的Y坐标.attr("width", 100) // 宽度.attr("height", 100) // 高度.attr("fill", "red"); // 颜色</script>
</body>
</html>

4. 线 (Line)

线可以通过<line>标签来定义,需要指定起始点和结束点的坐标。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");svg.append("line").attr("x1", 50)  // 起始点X坐标.attr("y1", 50)  // 起始点Y坐标.attr("x2", 150) // 结束点X坐标.attr("y2", 150) // 结束点Y坐标.attr("stroke", "black") // 颜色.attr("stroke-width", 2); // 线宽</script>
</body>
</html>

5. 多边形 (Polygon)

多边形可以通过<polygon>标签来创建,需要提供一系列的顶点坐标。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");const points = "50,150 100,50 150,150"; // 三角形的三个顶点svg.append("polygon").attr("points", points).attr("fill", "purple"); // 颜色</script>
</body>
</html>

在这里插入图片描述

6. 路径 (Path)

路径是最灵活的图形之一,可以通过<path>标签和d属性来定义复杂的形状。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><script src="https://d3js.org/d3.v6.min.js"></script>
</head>
<body><svg width="200" height="200"></svg><script>javascript">const svg = d3.select("svg");const pathData = "M10,10 H90 V90 H10 Z"; // 定义一个正方形svg.append("path").attr("d", pathData).attr("fill", "orange"); // 颜色</script>
</body>
</html>

以上示例展示了如何使用D3.js结合SVG来创建基本的几何图形。这些基础图形可以组合起来创建更复杂的视觉效果。


http://www.ppmy.cn/news/1548190.html

相关文章

P1048 [NOIP2005 普及组] 采药

P1048 [NOIP2005 普及组] 采药 #include<bits/stdc.h> using namespace std; long long T,M,w[105],t[105],dp[1005][1005]; int main(){cin>>T>>M;for(int i1;i<M;i) cin>>t[i]>>w[i];for(int i1;i<T;i){ //i表示时间限制for(int j1;j&l…

动态规划 —— 子数组系列-最长湍流子数组

1. 最长湍流子数组 题目链接&#xff1a; 978. 最长湍流子数组 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/longest-turbulent-subarray/description/ 2. 题目解析 假如有一个数组{a , b , c , d }如果在a这个位置&#xff0c;b比a大&#xff0c;呈上…

【汇编语言】数据处理的两个基本问题(二) —— 解密汇编语言:数据长度与寻址方式的综合应用

文章目录 前言1. 指令要处理的数据有多长&#xff1f;1.1 通过寄存器指明数据的尺寸1.1.1 字操作1.1.2 字节操作 1.2 用操作符X ptr指明内存单元的长度1.2.1 访问字单元1.2.2 访问字节单元1.2.3 为什么要用操作符X ptr指明 1.3 其他方法 2. 寻址方式的综合应用2.1 问题背景&…

蓝桥杯每日真题 - 第16天

题目&#xff1a;&#xff08;卡牌&#xff09; 题目描述&#xff08;X届 C&C B组X题&#xff09; 解题思路&#xff1a; 题目分析&#xff1a; 有 n 种卡牌&#xff0c;每种卡牌的现有数量为 a[i]&#xff0c;所需的最大数量为 b[i]&#xff0c;还有 m 张空白卡牌。 每次…

传奇996_21——龙岭事件

游戏事件 点击事件 点击触发npc 倒叙讲解&#xff1a; 提前设下游戏事件add&#xff0c;由点击npc事件EventCfg.onClicknpc调用该游戏事件&#xff0c;搜索EventCfg.onClicknpc即可 GameEvent.add(EventCfg.onClicknpc, function (actor,npcid,npcRet)if npcid ~ 14 and n…

【大数据分析机器学习】分布式机器学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

蓝桥杯每日真题 - 第15天

题目&#xff1a;&#xff08;钟表&#xff09; 题目描述&#xff08;13届 C&C B组B题&#xff09; 解题思路&#xff1a; 理解钟表指针的运动&#xff1a; 秒针每分钟转一圈&#xff0c;即每秒转6度。 分针每小时转一圈&#xff0c;即每分钟转6度。 时针每12小时转一圈…

C++ 模板进阶:探索更强大的编程技巧

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 如果你对C 模板编程还存在疑惑&#xff0c;欢迎阅读我之前的作品 &#xff1a; &#x1f525;&#x1f525;&#x1f525;C 模板…