D3.js - 如何在此可折叠树中的文本中添加新行?

2023-11-22

我有一棵由 D3 构建的可折叠树。 这是 JSFIDDLE:http://jsfiddle.net/mEyQW/57/

正如您所看到的,当节点完全展开时,文本全部重叠。 我想添加新行来替换空格(可能有 1 或 2 个)。例如:SDS 123 将变为

SDS
123

我已经尝试了在堆栈溢出中找到的几个类似的答案,但仍然无法解决我的问题。 你能帮忙解决这个问题吗?由 JSFIDDLE 提出将不胜感激!

  nodeEnter.append("text")
      .attr("x", function(d) { return d.children1 || d._children1 ? -10 : 10; })
      .attr("dy", ".35em")
      .attr("text-anchor", function(d) { return d.children1 || d._children1 ? "end" : "start"; })
      .text(function(d) { return d.NickName ; })
      .style("fill-opacity", 1e-6);

Thanks!!


我遇到了类似的问题,所以我必须做一些手动工作。首先,您需要一个能够实际“包装”文本的函数:

function wordwrap(text, max) {
  var regex = new RegExp(".{0,"+max+"}(?:\\s|$)","g");
  var lines = [];
  var line; 
  while ((line = regex.exec(text))!="") {lines.push(line);} 
  return lines
}   

然后,您需要将此函数应用于每个文本元素。在你的代码中我会这样写:

nodeEnter.append("text")
  .attr("x", function(d) { return d.children1 || d._children1 ? -10 : 10; })
  .attr("dy", ".35em")
  .attr("text-anchor", function(d) { return d.children1 || d._children1 ? "end" : "start"; })
   .style("fill-opacity", 1e-6)
   .each(function (d) {
       if (d.NickName!=undefined) {
          var lines = wordwrap(d.NickName, 15)
          for (var i = 0; i < lines.length; i++) {
             d3.select(this).append("tspan")
                 .attr("dy",13)
                 .attr("x",function(d) { 
                      return d.children1 || d._children1 ? -10 : 10; })
                  .text(lines[i])
           }
        }
}); 

最终结果是这样的:

enter image description here

当然,你应该花一些时间调整x每个文本元素的位置。

EDIT一种更简单的方法是使用自动换行方法,如下所示:

function wordwrap2(text) {
   var lines=text.split(" ")
   return lines
}

并像下面这样应用它:

nodeEnter.append("text")
  .attr("x", function(d) { return d.children1 || d._children1 ? -10 : 10; })
  .attr("dy", ".35em")
  .attr("text-anchor", function(d) { return d.children1 || d._children1 ? "end" : "start"; })
   .style("fill-opacity", 1e-6)
   .each(function (d) {
       if (d.NickName!=undefined) {
          var lines = wordwrap2(d.NickName)
          for (var i = 0; i < lines.length; i++) {
             d3.select(this).append("tspan")
                 .attr("dy",13)
                 .attr("x",function(d) { 
                      return d.children1 || d._children1 ? -10 : 10; })
                  .text(lines[i])
           }
        }
});    

这是最后一种方法的小提琴:http://jsfiddle.net/mEyQW/59/

希望这可以帮助。

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

D3.js - 如何在此可折叠树中的文本中添加新行? 的相关文章

  • SVG 沿圆弧添加文本

    我正在尝试绘制 SVG 径向饼图 如下所述 色卡 https stackoverflow com a 18210763 1395178 现在我尝试将文本与圆弧一起添加到每个切片 我试图展示Text 1具有与 M 和 A 值完全相同的 x y
  • 如何从 mysql 数据库中提取数据并使用 D3.JS 进行可视化?

    我有一个数据库MySQL我想在其中可视化D3 JS 为了做到这一点 首先我想parse中的数据JSON格式 然后编写一个基本代码 从数据库中提取数据并使用D3 JS 我环顾四周 但找不到我想要的东西 因为我是新手D3 JS 我怎样才能做到这
  • 角度错误:冲突:多个资源向同一文件名 file.svg 发出不同的内容

    我有这个css in my component scss file bg background url assets images file svg center center no repeat 并且该路径中只有一个 svg 文件 因此每
  • D3js:如何设计地形图?

    给定具有高程数据的 GIS 栅格 如何在D3js中设计地形图 有没有使用 D3js 制作的耕地地形图 地形图的示例 不工作 我探索了以下可能性 tif gt gdal contour py gt shp gt topojson gt d3j
  • 如何制作一条带有边框的 SVG“线”?

    我有一个小 svg 小部件 其目的是显示角度列表 参见图片 现在 角度是线元素 只有描边 没有填充 但现在我想要一个 内部填充 颜色和周围的 描边 边框 我猜 line 元素无法处理这个问题 那么我应该使用什么来代替呢 请注意 线条笔划的线
  • 根据 D3 中的属性值对对象进行排序

    我有一系列在 D3 中使用的对象 例如 var cities city London country United Kingdom index 280 city Geneva country Switzerland index 259 ci
  • Android和播放SVG动画

    我正在编写一个 Android 应用程序 我想播放一个简单的 SVG 动画 我知道 Android 不提供 SVG 支持 我在这里有什么选择 从 Android Lollipop API 级别 21 开始 可以使用动画矢量Drawable
  • Typescript 中未定义的 d3.scale

    我是 Typescript 的新手 2 周 我正在从事包装 d3 js 框架的项目 我在使用 d3 d ts 命名空间 导出模块 导入时遇到问题 我的问题 当我尝试使用 d3 scale linear 时 浏览器控制台中出现错误 TypeE
  • 如何让d3.js生成svg而不绘制它?

    有没有办法只生成 svg 并将其作为字符串获取 而不实际绘制它 我考虑过将 svg 渲染到隐藏的 div 然后读取内部 html 但是有没有更干净的方法 我认为你可以这样做 var svg d3 select body append svg
  • D3.js折线图溢出边距

    我有 d3 js 折线图 它作为 angular js 应用程序的指令包含在内 动态添加的线和 xAxis 以及缩放线上的边距溢出 我必须在图的顶部为每条加载的线创建 Ox 轴 并具有 Ox 和 Oy 单独的缩放可能性 Oy 缩放工作正常
  • 在 SVG 中绘制空心形状

    我想在 SVG 中绘制一个中心被挖空的形状 我问这个问题是为了画一个中间有一个圆的圆here https stackoverflow com questions 8193675 draw a hollow circle in svg 819
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • SVG 文本在 IE 中消失,直到我单击它

    我在 Internet Explorer Edge 以 Win7 上的为准 中遇到与 SVG 创建和操作相关的问题 在我正在开发的应用程序中 我们使用 d3 生成 SVG 形式的图形 在 Chrome 和 Firefox 中 它们工作得很好
  • 窗口调整大小事件上的响应式画布

    我是画布概念的新手 我正在尝试使用 D3 js 绘制画布 我想让画布根据窗口屏幕大小进行响应 function onResize var element document getElementsByTagName canvas 0 var
  • 在 SVG 路径中动态创建渐变层

    我正在使用 SVG 创建动态路径 我现在希望在我的路径中添加渐变 但我被困住了 按照我尝试的方式 我的渐变沿着图 2 所示的路径进行 而我要求它是图 1 中的那种 Current 我的渐变和描边定义如下
  • 文本输入框作为 SVG 中的“foreignObject” - 文本溢出问题

    我使用 foreignObject 标签在 svg 中有一个文本输入框 这很有效 但是如果您在输入框中输入的内容比其宽度长 从而导致其溢出 那么文本实际上会出现在页面上的其他位置 可能是没有外来对象标记的默认位置 这是一些屏幕截图来解释正在
  • D3v6 嵌套图 - 嵌套 join()?

    我想可视化每个节点的 孩子 洞察力 我猜 D3v6 join 函数可以嵌套 不幸的是我找不到任何例子 下面的代码片段包含一个具有 3 个节点和子节点作为属性的outerGraph 到目前为止 这些孩子还没有被使用 相反 innerGraph
  • SVG 动画不适用于 Chrome 中的 favicon

    In the SVG 图标已设置 这是旋转内圆的SVG文件的内容 Favicon 动画在 Chrome 中根本不起作用 如何让它在 Chrome 中工作 在 Firefox 中可以正常工作 在 Edge 中则不行 但 Chrome 是最重要
  • SVG 查找路径的旋转角度

    我的 SVG 地图有问题 我使用 jVectorMap 创建自定义地图 我需要在字段中心写入每个字段的名称 例子是 JSFiddle 示例 http jsfiddle net mmogn90q 1 放大右侧查看文字 我可以用这个函数找到每个
  • 将 SVG 文件转换为多个不同大小的 PNG 文件

    我有一个 SVG 格式的徽标图像 我想知道是否有办法生成多个不同大小的 png 文件 例如 我设置了 20 个不同的宽度和高度 它会生成 20 个 PNG 文件 如果我必须一次处理 5 张图像也没关系 我已经安装了 illustrator

随机推荐

  • 我想在运行时获取变量的类型

    我想在运行时获取变量的类型 我该怎么做呢 因此 严格来说 变量的类型 始终存在 并且可以作为类型参数传递 例如 val x 5 def f T v T v f x T is Int the type of x 但取决于你想要什么do
  • 使用 python nltk 查找两个网页之间的相似性?

    我想知道两个网页是否相似 有人可以建议带有 wordnet 相似性函数的 python nltk 是否有帮助以及如何帮助 在这种情况下使用的最佳相似度函数是什么 The spotsigs提到的论文乔伊塞斯坎解决了内容重复检测问题 其中包含大
  • Nuxt:如何防止nuxt-link转到另一个页面?

    我需要停下来nuxt link转到另一个页面 这是我的代码
  • Flask:当用户在执行长进程时关闭浏览器会发生什么?

    情况如下 我有一个应用程序 它使用 Angularjs 作为前端 使用 Flask 作为后端 我有一条看起来像这样的路线 app route api route1 methods POST def route1 result some pa
  • GUI/TUI Linux 库

    是否有任何 UI 库可以从同一源构建文本用户界面 ncurses 和图形用户界面 GTK QT 我知道 debconf 可以与各种前端一起使用 我想构建类似但可编程的东西 该库支持 YaST 独立性 使用一个代码库执行 ncurses gt
  • Rails 中列名的别名

    在我的数据库中有 删除 或 监听控制 等列名 这些无法更改 因此我想为这些名称起别名以避免我的应用程序出现问题 I found 下面的代码但它已经过时了 2005 年 8 月 5 日 并且不适用于 Rails 3 module Legacy
  • 奇数时选择最后一个子项,偶数时选择最后 2 个子项

    我所处的情况是显示的元素数量是可变的 我需要一个奇怪的解决方案 但我无法实现 我什至怀疑它是否只能通过 css 来实现 如果元素数量是奇数 我需要选择最后一个子元素 如果元素数量是偶数 我需要选择最后 2 个子元素 我一直在尝试nth la
  • Yq:检索对象键名称

    我有一个 YAML 文件 在我的例子中是 docker compose 文件 如下所示 networks foo some opts covfefe bar some opts such wow services apache image
  • 空 HTML href 会导致 IE 中列出目录

    我有一个带有单独 HTML 文件的网站 实际上是 shtml 但这对于这个问题来说并不重要 这些 shtml 文件包含一张图片以及一个前进和后退按钮 因此我可以切换回预览 shtml 文件或浏览到下一个文件 就像在画廊中一样 所有这些 sh
  • 私有字段的 Scala 名称修改和 JavaFX FXML 注入

    下面的例子和解释很长 所以这是我的问题的要点 当使用坚持执行字段注入 在真正应该保持私有的字段上 的框架时 如何处理scalac对私有字段的名称修改 我正在 Scala 中使用 ScalaFX JavaFX 和 FXML 编写一个应用程序
  • Bootstrap 4 导航栏垂直显示而不是水平显示

    我已经按照教程中的方式构建了一个导航栏 但不知何故 我的导航栏在应该水平显示时却垂直显示 关于如何解决这个问题有什么想法吗 提前致谢
  • CakePHP SwiftMailer SMTP TLS OpenSSL 错误 SSL3_GET_RECORD:版本号错误

    我正在尝试使用我在这里找到的 CakePHP SwiftMailer 组件发送电子邮件 http bakery cakephp org articles sky l3ppard 2009 11 07 updated swiftmailer
  • MongoDB 自定义序列化器实现

    我是 MongoDB 新手 正在尝试让 C 驱动程序序列化 F 类 我让它使用可变 F 字段和无参数构造函数与类自动映射器一起工作 但实际上我需要保留不变性 因此我开始考虑实现 IBsonSerializer 来执行自定义序列化 我还没有找
  • 通过 Jenkins API 获取子项目构建

    我配置了一个 Jenkins 项目 我在这里称之为 SuperJob 来简单地按顺序调用几个不同的其他 jenkins 项目 我希望能够通过 Jenkins API 找出该 SuperJob 特定构建号的所有子项目的结果 查看发布的代码HE
  • Vim:突出显示 incsearch 中的所有匹配项

    我正在使用incsearch and hlsearch选项 按 Enter 键后 所有匹配项都会突出显示 但只有我键入时的第一个匹配项 我想在输入时突出显示所有匹配项 我怎样才能得到这种行为 您可以使用incsearch vim 插件 In
  • 修改 Pods 文件后 Cocoa pod 出现问题

    当我更改 Pods 文件时 在命令 pod install 后收到此错误 Users mac Documents Projects Test Podfile 1 syntax error unexpected tINTEGER expect
  • 将日期从 JSON 反序列化为 Typescript 中的日期

    我从后端得到一个如下所示的 JSON schedulingId 7d98a02b e14f 43e4 a8c9 6763ba6a5e76 schedulingDateTime 2019 12 28T14 00 00 registration
  • 提交表单后如何使用 WWW::Mechanize 下载文件?

    我有代码 usr bin perl use strict use WWW Mechanize my url http divxsubtitles net page subtitleinformation php ID 111292 my m
  • Powershell ConvertFrom-Json 编码特殊字符问题

    我的 powershell 脚本中有这段代码 但它在特殊字符部分表现不佳 request http 151 80 109 18 8082 vrageremote v1 session players a Invoke WebRequest
  • D3.js - 如何在此可折叠树中的文本中添加新行?

    我有一棵由 D3 构建的可折叠树 这是 JSFIDDLE http jsfiddle net mEyQW 57 正如您所看到的 当节点完全展开时 文本全部重叠 我想添加新行来替换空格 可能有 1 或 2 个 例如 SDS 123 将变为 S