为 d3.js 中的多个元素生成 ClipPaths

2024-06-24

我正在尝试创建部分填充的圆圈,就像最终的《纽约时报》政治大会可视化中的圆圈一样:http://www.nytimes.com/interactive/2012/09/06/us/politics/convention-word-counts.html http://www.nytimes.com/interactive/2012/09/06/us/politics/convention-word-counts.html

我在 d3 中找到的两个最清晰的 ClipPaths 代码示例(https://gist.github.com/1067636 https://gist.github.com/1067636 and http://bl.ocks.org/3422480 http://bl.ocks.org/3422480)为每个剪辑路径创建具有唯一 id 的单独 div 元素,然后将这些路径应用到单个元素。

我不知道如何从这些示例转到基于数据值的一组元素中的每个元素具有唯一的圆形 ClipPath 的可视化,以便我可以创建效果。

这是我所拥有的so far:

给定具有以下结构的数据:

data = [        
    {value: 500, pctFull: 0.20, name: "20%"}, 
    {value: 250, pctFull: 0.75, name: "75%"},
    {value: 700, pctFull: 0.50, name: "50%"},        
]

1) 为数据集中的每个对象创建一个带有圆圈的力图。圆的面积是从对象值导出的。

2) 使用 mbostock 示例中的算法根据每个数据点的比例 (pctFull) 计算 k(和 h)http://bl.ocks.org/3422480 http://bl.ocks.org/3422480

3) 使用 k 为每个数据点生成一个覆盖圆的适当区域的矩形。

我认为如果我可以将每个矩形的可见性限制在其各自的圆上,那么插图就可以完成,但这就是我陷入困境的地方。我尝试了很多方法,但没有一个有效。

这是jsfiddle:http://jsfiddle.net/G8YxU/2/ http://jsfiddle.net/G8YxU/2/


在这里查看一个工作小提琴:http://jsfiddle.net/nrabinowitz/79yry/ http://jsfiddle.net/nrabinowitz/79yry/

// blue circle
node.append("circle")
    .attr("r", function(d, i) {return rVals[i];})
    .style("fill", "#80dabe")                
    .style("stroke", "#1a4876");   

// clip path for the brown circle
node.append("clipPath")
    // make an id unique to this node
    .attr('id', function(d) { return "clip" + d.index })
  // use the rectangle to specify the clip path itself 
  .append('rect')
    .attr("x", function(d, i){ return rVals[i] * (-1);})
    .attr("width", function(d, i){ return rVals[i] * 2;})
    .attr("y", function(d, i) {return rVals[i] - (2  * rVals[i] * kVals[i]);})
    .attr("height", function(d, i) {return 2  * rVals[i] * kVals[i];});

// brown circle
node.append("circle")
    // clip with the node-specific clip path
    .attr("clip-path", function(d) { return "url(#clip" + d.index + ")"})
    .attr("r", function(d, i) {return rVals[i];})
    .style("fill", "#dabe80")                
    .style("stroke", "#1a4876");   
  • 看起来为元素指定剪辑路径的唯一方法是使用url(IRI)中的符号clip-path属性,这意味着您需要基于节点数据的每个剪辑路径有一个唯一的 ID。我用过表格clip<node index>对于 id - 因此每个节点都有自己的剪辑路径,并且该节点的其他子元素可以引用它。

  • 按照迈克的示例,制作两个不同颜色的圆圈并使用矩形本身作为剪辑路径,而不是制作基于圆圈的剪辑路径,这似乎是最简单的。但无论哪种方式你都可以做到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 d3.js 中的多个元素生成 ClipPaths 的相关文章

  • javascript 可以从父页面访问 iframe 元素吗?

    我的页面上有 iframe iframe 和父页面位于不同的域中 父页面上的 javascript 代码可以访问此 iframe 内的元素吗 如果页面来自不同的域 则不应该这样做 浏览器安全沙箱应该阻止这种类型的访问 当两个页面来自不同的时
  • 如何在 Angular 中按 ID 显示博客详细信息

    我想在 Angular 中通过 ID 显示博客详细信息 为此 当您单击博客主页上的按钮时 应用程序会将您带到博客详细信息页面 即 pagina component html 文件 我实现了在此处显示所有博客 但我真正想要的是显示一个独特的博
  • JavaScript 中的负数到二进制字符串

    任何人都知道为什么javascriptNumber toString https developer mozilla org en US docs JavaScript Reference Global Objects Number toS
  • 角度单元格 xlsx 着色

    我有一个问题 我想根据一个值在我的 exel 行中添加红色或绿色来下载 如何在工作表中设置指定单元格的颜色 这是处理 exel 格式的 ts 类 表达 import Injectable from angular core import a
  • $(document).ready 回调何时执行?

    假设我们附加一个 click http api jquery com click 锚点的处理程序 a 中的标签 document ready http api jquery com ready 打回来 该处理程序将取消默认操作 遵循href
  • 如何使用React Native在屏幕上绘图?

    我正在尝试在 React Native 中实现一个 Android 绘图应用程序 我正在使用 PanResponder 但我不知道如何获取用户触摸的部分的坐标 我尝试过使用react native svg但我不知道该放在哪里PanRespo
  • Bootstrap 页脚不在底部

    我试图强制我的页脚位于网站底部 我不希望它在滚动时粘住 只是在向下滚动网页时出现在底部 目前 网页显示时页脚位于内容下方 我添加了这样的代码bottom 0 并发现它粘住了并且不适合我的网站 我还添加了这样的代码html body heig
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • `forEach` 函数中的 `return` 关键字是什么意思? [复制]

    这个问题在这里已经有答案了 button click function 1 2 3 4 5 forEach function n if n 3 it should break out here and doesn t alert anyth
  • 同心放射圆 d3

    我有一个等距值的数组 我用它来绘制同心圆 我想使用一种散发效果 本质上是 一旦最外面的圆的值超过最大值 就将其删除 并在中心添加一个新的圆来补偿 我不确定如何操作数据集来删除和添加新圆圈
  • Angular 4 - 具有动态参数值的自定义验证器

    我编写了一个自定义验证器 用于检查日期是否高于某个最小日期 代码如下所示 export function validateMinDate min Date ValidatorFn return c AbstractControl gt if
  • 如何在 Google 地图上旋转叠加图像?

    我正在尝试将一系列叠加层放置到 Google 地图上 我正在跟随地面覆盖层的示例代码 https developers google com maps documentation javascript examples groundover
  • LightningChart JS - LineSeries / Progressive X 的损坏

    我在使用 LightningChart 时遇到了一个有趣的问题 它似乎会破坏或以其他方式减少我的数据 具体取决于它与图表的 DateOrigin 的距离 我的数据是每秒 1000 个样本 我试图一次显示 1 2 周的数据 我正在使用 Cha
  • 从数组中删除空字符串,同时保持记录而不循环?

    这个问题在这里被问到 从数组中删除空字符串 同时保留非空字符串的索引记录 https stackoverflow com questions 18113243 remove empty strings from array while ke
  • 脚本不会从nodejs应用程序中的ejs文件运行

    我正在尝试使用nodejs express mysql和ejs让网页显示图表 但我显然不明白ejs javascript等是如何工作的 我需要运行一个脚本来设置图表 来自 Chart js 模块 但它不会输出任何类型的图表 我尝试过的 将
  • 从组件刷新/重新加载 ember 路由

    我有一个组件 它实际上是一个模式对话框 当我完成该对话框并按 确定 按钮时 我想留在打开该对话框的停留页面上 这并不难 但问题是该对话框更改了数据 我通过 REST 调用获取数据 因此我需要刷新已经所在的路线以反映数据更改 因为我是从组件中
  • 如何从 Instagram 的 media_preview 原始数据重新创建预览?

    如果您从 Instagram 的 API 获取 JSON 数据 您会发现media previewkey 其值是一些 Base64 编码的数据 它看起来确实像一些非常小的预览二进制数据 也许是压缩的 Take 这个帖子 https www
  • JavaScript 模板文字稍后替换变量(在知道值之前)

    是否可以在已知值之前以某种方式使用模板文字 JS 模板文字的每个演示都如下所示 var name John var s Hello name 但在现实世界中 模板是在我们知道变量值之前定义的 某处定义了模板 在页面加载时 var s Hel
  • 在用户单击之前图像不会绘制在画布上?

    我使用执行类似以下操作的函数绘制几张图像 context drawImage img width 2 1 height 2 1 width height 我读过 我需要等待图像加载后才能绘制它 如下所示 img onload functio
  • 如何将国家/地区代码与电话号码分开?

    我的数据库中有很多电话号码 例如 1 123 456 7890 我要做的是将国家 地区拨号代码 在本例中为美国 加拿大的 1 与电话号码分开 我尝试创建所有国家 地区的 JSON 列表 并在加载页面时将电话号码和国家 地区代码分开 它工作正

随机推荐

  • 将 Excel 模板 (xltx) 作为 Excel 模板而不是工作簿打开

    我正在尝试编写一行代码来打开 Excel 模板 xltx 文件作为 Excel 模板文件而不是新工作簿 我只是想让用户查看和编辑他们在我们网络上的库文件夹中的模板 然而 我尝试过的所有操作都会打开一个新的工作簿而不是模板 我尝试过互操作 W
  • cordova 平台添加 android 在列出 Android 目标时不起作用

    当我想向我的phoneGap 应用程序添加Android 平台时 我遇到了问题 当我执行命令 cordova platform add android 时 我在 CLI 中收到此消息 Checking Android requirement
  • 如何从Python列表中删除单词

    到目前为止我已经完成了我的代码 但它无法与remove 一起正常工作 任何人都可以帮助我 Created on Apr 21 2015 author Pallavi from pip vendor distlib compat import
  • 训练后将保存的 NEAT-Python Genome 应用到测试环境

    我使用了一些 NEAT 算法为一些简单的游戏 例如 flappybird 编写了自己的 AI 代码 一切正常 我知道发生了什么 问题是我不知道如何处理结果 人工智能学到了一些东西 我想保存这个进度 TechwithTim YouTuber
  • 连接别名计算列中的行

    我有两张表 一张名为 Car 一张名为 Mileage 汽车表有以下列 CarName varchar max 里程表有以下列 CarMileage int CarName varchar max TotalGasTrips int 我的代
  • 如何使用 webRTC、node.js 和 socket.io 构建多用户视频聊天 Web 应用程序

    我正在尝试制作一个支持多用户视频聊天的网络应用程序 我读过一篇关于 webrtc 的文章 webrtc 入门 http www html5rocks com en tutorials webrtc basics http www html5
  • TFS 快速错误:工作文件夹 C:\LocalFolder 已在使用中

    我正在使用 VS 2015 并且正在开发一个具有本地工作区的项目C 本地文件夹映射到 服务器文件夹 在某些时候 当我尝试探索源代码管理时 VS 2015 崩溃了 所以我不得不终止 devenv exe 进程 接下来 当我重新打开解决方案时
  • 为什么 Silverlight 内容控件不进行垃圾回收?

    我一直在调查为什么我的一些控件没有被垃圾收集 并注意到很容易防止从 ContentControl 继承的简单控件被破坏 这是一个例子 这是我的自定义内容控件 public class MyCustomControl ContentContr
  • 如何解决颤动错误中的“作为前缀”

    The name LocationAccuracy is defined in the libraries package geolocation geolocation dart package geolocator geolocator
  • 磁盘上可能的最小文件大小是多少?

    我正在尝试找到一种解决方案来将二进制文件存储在磁盘上的最小大小 我正在从 30 字节的数据库中读取车辆 VIN 和车牌号 当我将其放入 txt 文件并保存时 其大小为 30B 但其在磁盘上的大小为 4KB 这意味着如果我保存 100000
  • 自定义对元组向量进行排序

    我有一个元组向量 例如 vector
  • 可并行化 OVER EACH BY

    我一次又一次地遇到这个障碍 JOIN EACH 和 GROUP EACH BY 子句不能用于窗口函数的输出 https stackoverflow com questions 20966816 join each and group eac
  • WebRTC如何处理多对多连接?

    如果我和其他 7 个用户在一个房间里 我想知道 WebRTC 是否强制每个用户与其他每个参与者建立连接 显然 它会消耗 7kb s 7 的下载甚至上传速度 并且如果连接已经很忙 许多连接就无法处理这个问题 相反 使用某种媒体中继 带宽使用量
  • OpenCart 在控制器外部加载模型

    我正在开发一个 OpenCart 项目 该项目需要大量定制 对于我的项目 我必须更改购物车库 system library cart php 中的某些内容 我必须调用在产品模型 catalog model catalog product p
  • Android - 启动画面的淡出动画

    我想为我的启动画面添加淡出动画 即在关闭启动画面时我想带来淡出动画效果 这是我尝试过的代码 overridePendingTransition R anim fade in R anim fade out 但以上只能从2 0开始使用 Ny
  • 使用 Python 图像库 (PIL) 绘制抗锯齿线

    我正在使用 Python 图像库的 ImageDraw line 绘制一堆线条 但它们看起来很可怕 因为我找不到消除锯齿的方法 如何在 PIL 中消除锯齿线 这是一个非常快速地组合在一起的函数 用于用 PIL 绘制一条抗锯齿线 这是我在谷歌
  • 抓取问题:“检查元素”与“查看页面源代码”不同

    我正在尝试对一个网页进行网络抓取 该网页内部包含多个选项卡 当我单击所需的选项卡并显示其内容后 首先出现两个问题 1 网页地址不会更改 并且所有选项卡都相同 2 当我使用浏览器 firefox和chrome 的 查看页面源 查看页面源时 所
  • Terraform 本地执行配置程序中的转义字符

    我想使用链接 Terraform 和 Ansiblelocal exec供给者 然而 由于这需要输入to安西布尔fromTerraform 我被以下复杂的命令困扰 provisioner local exec command sleep 6
  • 文本字段中的 SwiftUI 颜色输入

    我遇到了 SwiftUI 的问题 当用户输入文本字段时 我需要将文本字段中的所有字母设置为红色 将所有数字设置为黑色 假设我有这个代码 TextField A99 text viewModel code padding trailing m
  • 为 d3.js 中的多个元素生成 ClipPaths

    我正在尝试创建部分填充的圆圈 就像最终的 纽约时报 政治大会可视化中的圆圈一样 http www nytimes com interactive 2012 09 06 us politics convention word counts h