D3 - 如何将圆包转换为椭圆包?

2024-03-11

如何利用D3圆形包布局以获得与此类似的图表:

(即使有更细长的椭圆)?

这种图表样式的关键应用是更容易放置标签。

This is jsfiddle http://jsfiddle.net/VividD/WDCpq/8/这演示了我为其他目的制作的圆形包,但我想对于任何想要实验和测试涉及椭圆的潜在解决方案的人来说,这可能是有用的起点。


根据@Mariatta 的回答,我得到了这个jsfiddle http://jsfiddle.net/Upt3h/1/:

但我希望我能保留亲子之间的视觉联系。


在第二次尝试中,我得到了我想要的(jsfiddle http://jsfiddle.net/Upt3h/2/):

关键是要改变cy椭圆的方式与ry.


那么你需要注意的部分是:

var circles = vis.append("circle")
    .attr("stroke", "black")
    .style("fill", function(d) { return !d.children ? "tan" : "beige"; })
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .attr("r", function(d) { return d.r; });

这里发生的情况是,您正在创建一个具有 cx、cy 和 r 属性的 svg 圆形元素,类似于<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />

要将其转换为省略号,您需要知道需要设置哪些属性。可以像这样创建 svg 椭圆元素:<ellipse cx="200" cy="80" rx="100" ry="50">请注意您需要如何设置cx, cy, rx, and ry相对于cx, cy, and r for <circle>

基于这些知识,您现在应该能够将圆转换为椭圆,如下所示:

var ellipses = vis.append("ellipse")
    .attr("stroke", "black")
    .style("fill", function(d) { return !d.children ? "tan" : "beige"; })
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .attr("rx", 10) // define your own rule for x radius
    .attr("ry", 5); // define your own rule for y radius
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D3 - 如何将圆包转换为椭圆包? 的相关文章

随机推荐

  • 为什么 Java 类型擦除没有阻止此代码编译

    我有一个类定义了以下两种方法 public Map
  • 如何让 scalac 告诉我是否有未使用的变量?

    我刚刚注意到代码中的一个错误 我创建了一个新变量 但后来未能实际使用它 我以为 scalac 会告诉我我的新变量未被使用 但情况似乎并非如此 在进行少量谷歌搜索 手册页后 我找不到任何有关启用警告的信息 我该怎么做才能启用此类警告 这个东西
  • 使用Javascript读取外部文件

    我有一个可变长度名称的外部文本文件配置文件 txt包含以下格式的信息 Jason Red Tyrannosaurus Zack Black Mastodon Billy Blue Triceratops Trini Yellow Griff
  • 如何手动刷新升压日志?

    我正在使用 boost 1 54 0 中的 Boost Log 看看它是否适合我的应用程序 一般来说 我的缓冲没有问题 所以我不想打开 auto flush 或任何东西 但我注意到在我调用之前记录的消息fork 是重复的 我想知道是否是因为
  • 如何使用 Pyomo 制作指标函数?

    我正在寻找在 Pyomo 中创建一个简单的指示变量 假设我有一个变量 x 如果 x gt 0 则该指示函数将取值 1 否则取 0 我尝试这样做的方法如下 model ConcreteModel model A Set initialize
  • 自定义智能感知自动完成

    是否可以添加自定义智能感知来自动完成我的字符串 Example 我输入 艾达 它将弹出智能感知 gt Adapt gt Adapter 我正在使用一种新语言 需要向 Visual Studio 2015 的库添加更多功能 使用我的关键字数据
  • 免费升级为付费 Android 应用,不留两个图标

    我有一个Android应用程序 有免费和付费版本 其中免费版本有时间限制 之后它将用户重定向到市场购买付费版本 这两个版本具有不同的包名称 并作为单独的应用程序提交到市场 但是 当用户购买付费版本时 这不会取代免费版本 他们会同时安装两个版
  • 使用 Glide 预加载多个图像

    我们正在努力预加载图像到缓存内存中以便稍后加载它们 图像位于资产文件夹申请的 我们尝试过的 Glide with this load pictureUri diskCacheStrategy DiskCacheStrategy ALL Gl
  • 获取 Spring Security 中所有已登录的用户

    我想获取当前登录我的应用程序的所有用户的列表 我知道 我应该注射SessionRegistry在我的代码中调用getAllPrincipals 方法 不幸的是 我总是得到空列表 看起来SessionRegistry没有填充 我不知道如何制作
  • 那么 ASP.NET MVC 3 中是否内置了 [Email] 属性?

    The Email 属性将像在未来一样内置到 ASP NET MVC 3 中吗 那么现在可以用还是不能用呢 我想这是一个相当愚蠢的问题 但我花了一些时间谷歌搜索并没有找到任何正常的答案 电子邮件正则表达式 a z d u00A0 uD7FF
  • Fancybox 导航箭头未显示

    我是 jquery 的新手 所有动画 例如过渡和速度 都工作正常 但是 showNavArrows 和 循环 不起作用 这是代码 document ready function a single image fancybox transit
  • HTTP 状态 500 - java.lang.NoClassDefFoundError:无法初始化类 org.apache.jasper.el.E​​LContextImpl [重复]

    这个问题在这里已经有答案了 当我尝试在 myeclipse 上浏览 localhost 8080 时 出现以下错误 type Exception report message java lang NoClassDefFoundError C
  • 合并特定列上的两个大型数据框并显示进度条

    我有两个大型数据集 一个 2 6 GB 另一个 1GB 我已经设法将它们作为数据帧读取 接下来 我想要创建一个新的 DataFrame 在其中我想要将两个数据集的唯一 ID 进行匹配 并丢弃两个数据集之间没有匹配的 ID 的行 我尝试过合并
  • 如何使用 JSPM 导入带有 Typescript 声明的外部 NPM 模块

    test module 是用 Typescript 编写的外部模块 带有 index d ts 定义文件 它在 package json 中有 tsd tsc 的属性 typings dist index d ts 打字稿 定义 dist
  • Xcode gRPC-Core 错误:找不到“openssl_grpc/ssl.h”文件

    Xcode 11 2 1 Mac 10 15 2 测试版 Pod 版本 1 8 4 我试图Archive我的 Mac 应用程序在 Xcode 上 然后在我的 Xcode 中出现以下错误 我可以毫无问题地编译我的应用程序 只是无法存档 我想问
  • 在主模块中找不到库模块中的包

    我有一个从 Eclipse 导入到 Android Studio 的项目 在 Eclipse 中一切都运行良好 它包含一个主模块 Eclipse 中的项目 它使用库模块 Eclipse 中的库项目 中的包 由于迁移进展不顺利 我手动创建了一
  • package-info.java 包注释影响所有类,包括子包中的类

    我想在我的所有课程上应用注释 并且我正在尝试最好的方法来做到这一点 到目前为止 我坚持使用可以注释整个包的 package info java 文件 但不能注释子包中包含的类文件 除了在我的项目中添加 100 个仅包含单个注释的相同 pac
  • 应用什么算法来连续重新分配小内存块?

    在 C 程序中 我面临需要拥有大量内存块的事务 我需要知道是否有一种算法或最佳实践技术用于处理所有这些 malloc free 我使用数组来存储这些内存块 但在某些情况下指出数组本身已满并且重新分配数组只会更加浪费 处理这个问题的优雅方法是
  • 是否可以强制通过 Wifi 或 TMobile 网络进行网络流量?

    我想知道使用 G1 是否可以强制网络流量通过 Wifi 或通过 Cell GSM 网络 我需要强制应用程序通过塔式网络连接以获取一些登录信息 这可能吗 有人对这如何可能有任何想法吗 我正在尝试使用 Android SDK 在应用程序内完成此
  • D3 - 如何将圆包转换为椭圆包?

    如何利用D3圆形包布局以获得与此类似的图表 即使有更细长的椭圆 这种图表样式的关键应用是更容易放置标签 This is jsfiddle http jsfiddle net VividD WDCpq 8 这演示了我为其他目的制作的圆形包 但