d3.js 相关问题

D3.js是一个JavaScript库,用于使用HTML,SVG和Canvas创建文档的交互式数据绑定可视化。

为什么我所有的 d3 bl.ocks 从 bl.ocks.org 中消失了?

我刚刚添加了一个新的 d3 块,发现所有图形都从我现有的块中消失了:https://bl.ocks.org/emmasaunders。文本和代码仍然存在,但图形不存在......

回答 1 投票 0

开玩笑,使用 d3 时出现意外的令牌“导出”

我读过很多与我类似的问题,但似乎没有一个能解决我的问题。我正在使用 Vue3、TypeScript、Jest 和 D3 v7。当我尝试从“d3”导入 * 作为 d3 时;我收到此错误...

回答 3 投票 0

D3 图表中未绘制区域的自定义颜色(角度)

我想为 d3 图表中的拉丝部分应用一些颜色,为非拉丝区域应用一些颜色。 常量画笔 = d3.brush() .extent([[0, 0], [宽度, 高度]]) .on('开始', Brushstart) .on('结束',

回答 1 投票 0

如何在构建 Angular 应用程序时修复 d3-dag 的 index.d.ts 错误

我已经运行 Angular 12 应用程序,并且安装了 d3 和 d3-dag 来创建图形。但我在 node_modules/d3-dag....index.d.ts 文件中遇到错误。 角度版本:12.2.16 Node.js 版本...

回答 1 投票 0

更新 D3 图表中未绘制部分的颜色(角度)

我想为拉丝部分应用一些颜色,为非拉丝区域应用一些颜色,我尝试了多种方法,帮助我实现这一目标。 const BrushSelection = svg.select('.brush .selection');

回答 1 投票 0

d3.js 将动态变量名称传递给 d.properties 方法

我传统上使用 d.properties.columnName 来访问 d3.js 中的值数组。但是,如果我不想对字段名称进行硬编码,而是想将其作为变量传递,该怎么办? 例子: //获取当前

回答 1 投票 0

D3 比例在 v6 中有效,但在 v7 中无效

我有使用 d3 v6.7.0 的代码,它设置了一个比例,如下所示: 常量范围 = [0, 828.156]; 常量域 = [[300,1],[300,2],[300,3],[400,1],[400,2],[400,3],[400,4]] 常量比例 = d3.scaleBand() .做...

回答 1 投票 0

Visx Streamgraph 自定义类型

我正在使用 visx 为我的应用程序构建流图,但对 visx/d3 非常陌生。我可以使用简单的二维数字数组(如本例所示)生成图表,但在

回答 1 投票 0

运行 d3 示例代码时没有任何显示

我对 d3.js 和 javascript 很陌生。 我只是想尝试一些 d3 示例代码。 我从这里复制了 d3.js 代码。 我对 d3.js 和 javascript 很陌生。 我只是想尝试一些 d3 示例代码。 我从这里复制了d3.js代码。 <!DOCTYPE html> <meta charset="utf-8" /> <style> .node circle { fill: #999; } .node text { font: 10px sans-serif; } .node--internal circle { fill: #555; } .node--internal text { text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff; } .link { fill: none; stroke: rgb(214, 15, 145); stroke-opacity: 0.4; stroke-width: 1px; } form { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; } </style> <svg width="928" height="928"></svg> <script src="http://d3js.org/d3.v6.min.js"></script> <script> const data = { name: "Name", children: [ { name: "A_F", children: [ { name: "Alice", }, { name: "Bob", }, { name: "Charlie", }, ], }, { name: "G_P", children: [ { name: "Gary", }, { name: "Helen", }, ], }, ], }; // Specify the chart’s dimensions. const width = 928; const height = width; const radius = width / 6; // Create the color scale. const color = d3.scaleOrdinal(d3.quantize(d3.interpolateRainbow, data.children.length + 1)); // Compute the layout. const hierarchy = d3.hierarchy(data) .sum(d => d.value) .sort((a, b) => b.value - a.value); const root = d3.partition() .size([2 * Math.PI, hierarchy.height + 1]) (hierarchy); root.each(d => d.current = d); // Create the arc generator. const arc = d3.arc() .startAngle(d => d.x0) .endAngle(d => d.x1) .padAngle(d => Math.min((d.x1 - d.x0) / 2, 0.005)) .padRadius(radius * 1.5) .innerRadius(d => d.y0 * radius) .outerRadius(d => Math.max(d.y0 * radius, d.y1 * radius - 1)) // Create the SVG container. const svg = d3.create("svg") .attr("viewBox", [-width / 2, -height / 2, width, width]) .style("font", "10px sans-serif"); // Append the arcs. const path = svg.append("g") .selectAll("path") .data(root.descendants().slice(1)) .join("path") .attr("fill", d => { while (d.depth > 1) d = d.parent; return color(d.data.name); }) .attr("fill-opacity", d => arcVisible(d.current) ? (d.children ? 0.6 : 0.4) : 0) .attr("pointer-events", d => arcVisible(d.current) ? "auto" : "none") .attr("d", d => arc(d.current)); // Make them clickable if they have children. path.filter(d => d.children) .style("cursor", "pointer") .on("click", clicked); const format = d3.format(",d"); path.append("title") .text(d => `${d.ancestors().map(d => d.data.name).reverse().join("/")}\n${format(d.value)}`); const label = svg.append("g") .attr("pointer-events", "none") .attr("text-anchor", "middle") .style("user-select", "none") .selectAll("text") .data(root.descendants().slice(1)) .join("text") .attr("dy", "0.35em") .attr("fill-opacity", d => +labelVisible(d.current)) .attr("transform", d => labelTransform(d.current)) .text(d => d.data.name); const parent = svg.append("circle") .datum(root) .attr("r", radius) .attr("fill", "none") .attr("pointer-events", "all") .on("click", clicked); // Handle zoom on click. function clicked(event, p) { parent.datum(p.parent || root); root.each(d => d.target = { x0: Math.max(0, Math.min(1, (d.x0 - p.x0) / (p.x1 - p.x0))) * 2 * Math.PI, x1: Math.max(0, Math.min(1, (d.x1 - p.x0) / (p.x1 - p.x0))) * 2 * Math.PI, y0: Math.max(0, d.y0 - p.depth), y1: Math.max(0, d.y1 - p.depth) }); const t = svg.transition().duration(750); // Transition the data on all arcs, even the ones that aren’t visible, // so that if this transition is interrupted, entering arcs will start // the next transition from the desired position. path.transition(t) .tween("data", d => { const i = d3.interpolate(d.current, d.target); return t => d.current = i(t); }) .filter(function(d) { return +this.getAttribute("fill-opacity") || arcVisible(d.target); }) .attr("fill-opacity", d => arcVisible(d.target) ? (d.children ? 0.6 : 0.4) : 0) .attr("pointer-events", d => arcVisible(d.target) ? "auto" : "none") .attrTween("d", d => () => arc(d.current)); label.filter(function(d) { return +this.getAttribute("fill-opacity") || labelVisible(d.target); }).transition(t) .attr("fill-opacity", d => +labelVisible(d.target)) .attrTween("transform", d => () => labelTransform(d.current)); } function arcVisible(d) { return d.y1 <= 3 && d.y0 >= 1 && d.x1 > d.x0; } function labelVisible(d) { return d.y1 <= 3 && d.y0 >= 1 && (d.y1 - d.y0) * (d.x1 - d.x0) > 0.03; } function labelTransform(d) { const x = (d.x0 + d.x1) / 2 * 180 / Math.PI; const y = (d.y0 + d.y1) / 2 * radius; return `rotate(${x - 90}) translate(${y},0) rotate(${x < 180 ? 0 : 180})`; } svg.node(); </script> 我唯一编辑的就是删除最后一个return svg.node();并将其更改为svg.node(); 当我启动本地http服务器(py3 -m http.server 8000)时,我发现浏览器中没有任何显示,并且当我点击inspect时也没有错误。 只是想了解如何分类这个问题并排除故障。谢谢! 不幸的是,D3 规范示例通常在 Observable 上找到,虽然具有交互性和实用性,但如果不进行一两处更改,就无法转换为常规的 'ol javascript。 首先,Observable 使用 return svg.node() 返回一个分离的 DOM 元素以便显示它。分离的节点是使用 d3.create() 创建的。这在普通的 javascript 环境中不起作用:通常,您可以直接使用 d3.select("parentElement").append("svg") 附加 SVG,或者选择它(如果已经存在),如代码中所示 (d3.选择(“svg”)。 但是,您的示例具有一种数据格式,其中叶节点(本身没有子节点的节点)具有 value 属性: "children":[{"name":"AgglomerativeCluster","value":3938},{"name":"CommunityStructure","value":3812} 虽然您的数据没有: children: [{ name: "Alice", }, { name: "Bob", }, 这很重要,因为层次结构使用求和函数来列出每个节点的相对大小: const hierarchy = d3.hierarchy(data) .sum(d => d.value) 因此,您可以向每个叶节点添加一个 value 属性,这将生成一个视觉效果。但是,如果每个叶子应该具有相同的权重,那么您可以使用: const hierarchy = d3.hierarchy(data) .count() 其中每个父节点将根据每个分支中叶节点的数量进行加权。

回答 1 投票 0

在力图中设置固定节点时遇到问题:修复节点断开链接(D3)

刚接触 D3,从我在互联网上发现的内容来看,很多问题/示例都相当过时,所以我很难找到解决方案。 最终我想要一个网络图

回答 1 投票 0

D3 - 生命之树图未显示数据

我正在尝试添加此系统发育树视图 https://observablehq.com/@d3/tree-of-life 进入仪表板。完整的代码可以在那里找到,并在页面上提供下载链接。 我可以得到我自己的数据...

回答 1 投票 0

D3.js 错误转换弧“<path>属性 d:预期弧标志(‘0’或‘1’),”

我目前正在尝试使用旭日库创建旭日图。感谢这个论坛的帮助,我能够添加更新功能。现在,我总是收到以下错误消息...

回答 1 投票 0

D3.js - 分组条形图 - 更新输入数据时出错

我正在尝试使用分组条形图来显示测试问题的回答表现。我创建了两个 .svg 文件,其结果我的可视化应该能够在它们之间切换。我可以

回答 1 投票 0

D3.js 转换仅适用于已删除的元素

当我更新数据源时,转换仅适用于已删除的元素,但不适用于更新的元素。 我在“已删除部分”和“

回答 1 投票 0

使用 d3.js 创建显示堆叠点的点图

我想在 d3.js 中创建一个点图,它看起来有点像条形图,但有堆叠的点而不是条形图。 这个问题和我想要的类似:D3.js (Wilkinson type) Dot Plot

回答 1 投票 0

D3 中的折线和图例间距

我正在使用下面的示例,希望在饼图之外有图例,并且还具有文本的折线以及每个切片的计数和百分比。 使用当前代码我有 Pie

回答 2 投票 0

尝试在 d3 力图中的节点和边上渲染标签,但它们虽然在 dom 树下可用但不可见

为了在节点上渲染标签,我尝试了如下各种方法: var labels = node.append("text") .text(函数 (d) { 返回 d.label; }) .attr('x', 6) .attr('...

回答 1 投票 0

如何通过文本内容查找 DOM 元素?

我尝试向某些节点添加新的 SVG 元素。为此,要添加元素的节点必须通过文本内容中包含的字符串找到,例如找到任何具有“i...

回答 3 投票 0

d3js 模板文字中的内联事件处理程序

在下面的示例中,有一个内联事件处理程序无法正常工作,因为转义字符出现问题。一般来说,内联处理程序是不好的做法并且很难管理...

回答 1 投票 0

d3 创建换行符/选择父节点

我想实现换行。因此,我在文本元素中创建了两个 tspan。但是,我无法在不干扰第二个元素甚至删除它的情况下访问第一个 tspan` 元素。 我的代码...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.