d3.js 相关问题

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

D3 条形图可在单击按钮时更改数据源,但在按下按钮之前不会显示条形上的鼠标悬停工具提示

var 数据1 = [ { 组:“A”,值:4 }, { 组:“B”,值:16 }, { 组:“C”,值:8 } ]; 变量数据2 = [ { 组:“A”,值:7 }, { 组:“B”,值:1 ...

回答 1 投票 0

React/D3.js - 密度图 - 错误:<path> 属性 d:预期数字,“M10,NaNL12,NaNC14,Na…”

我被要求使用 D3.js 在 React 中实现密度图,但我的图在屏幕上没有显示任何内容。我对图表和数据可视化不太熟悉,所以我很挣扎。

回答 1 投票 0

为什么我的折线图在D3.js中显示是这样的?

我想使用d3.js显示温度和湿度曲线,但是我的代码运行时显示了这个错误的折线图,为什么会有黑色区域?我的代码有什么问题吗?有人能帮我吗?欣赏...

回答 1 投票 0

Plotly.js 添加标记会向 x 轴添加填充

有没有办法阻止 Plotly 在向折线图添加标记时更改 x 轴上的填充。 请参阅下面的两个片段。唯一的区别是第 24 行,其中“lines”是 chan...

回答 3 投票 0

我不知道为什么地图无法加载

所以,老师要求我们编写一个 d3 程序,绘制英国地图并根据给定的提要绘制城镇,我编写了代码,但地图无法加载。 我使用 d3js 但我只得到重新加载按钮...

回答 1 投票 0

D3js 缩放和平移无法使用按钮(缩放和平移)佐...</desc> <question vote="1"> <p>我正在尝试使用 d3js 进行缩放和平移。我附上了下面的代码。我正在使用 d3js v6。 目前缩放功能无法使用</p> <pre><code><!DOCTYPE html> <meta charset="utf-8"> <title>Zoom + Pan</title> <script src="https://d3js.org/d3.v6.min.js"></script> <style> .overlay { fill: none; pointer-events: all; } button { padding: 10px 20px; } </style> <body> <div id="buttons"> <button class="zooming" id="zoom_in">+</button> <button class="zooming" id="zoom_out">-</butto/*n> <button class="panning" id="pan_right">&rarr;</button> <button class="panning" id="pan_left">&larr;</button> <button class="panning" id="pan_top">&darr;</button> <button class="panning" id="pan_top">&uarr;</button> </div> <script> var width = 960, height = 500; var randomX = d3.randomNormal(width / 2, 80), randomY = d3.randomNormal(height / 2, 80); var data = d3.range(2000).map(function() { return [randomX(), randomY() ]; }); var zoom = d3.zoom().scaleExtent([1, 8]).translateExtent([ [ -1000, -500 ], [ 1000, 500 ] ]).on("zoom", zoomed); var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) .append("g") .call(zoom) .append("g"); svg.append("rect") .attr("class", "overlay") .attr("width", width) .attr("height", height); svg.selectAll("circle") .data(data) .enter().append("circle") .attr("r", 2.5) .attr("transform", function(d) { return "translate(" + d + ")"; }); function zoomed() { svg.attr("transform", "translate(" + [d3.zoomTransform(this).x,d3.zoomTransform(this).y] + ")" + "scale(" + d3.zoomTransform(this).k + ")" ); } async function interpolateZoom (translate, scale) { var self = this; await d3.transition().duration(350).tween("zoom", function () { var iTranslate = d3.interpolate([d3.zoomTransform(this).x,d3.zoomTransform(this).y], translate), iScale = d3.interpolate( d3.zoomTransform(this).k, scale); return function (t) { d3.zoomIdentity .scale(scale) .translate(translate); zoomed(); }; }); } function zoomClick() { var clicked = d3.event.target, direction = 1, factor = 0.2, target_zoom = 1, center = [width / 2, height / 2], extent = zoom.scaleExtent(), translate = zoom.translate(), translate0 = [], l = [], view = {x: translate[0], y: translate[1], k: zoom.scale()}; d3.event.preventDefault(); direction = (this.id === 'zoom_in') ? 1 : -1; target_zoom = zoom.scale() * (1 + factor * direction); if (target_zoom < extent[0] || target_zoom > extent[1]) { return false; } translate0 = [(center[0] - view.x) / view.k, (center[1] - view.y) / view.k]; view.k = target_zoom; l = [translate0[0] * view.k + view.x, translate0[1] * view.k + view.y]; view.x += center[0] - l[0]; view.y += center[1] - l[1]; interpolateZoom([view.x, view.y], view.k); } d3.selectAll('button').on('click', zoomClick); </script> </code></pre> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><!DOCTYPE html> <meta charset="utf-8"> <title>Zoom + Pan</title> <script src="https://d3js.org/d3.v6.min.js"></script> <style> .overlay { fill: none; pointer-events: all; } button { padding: 10px 20px; } </style> <body> <div id="buttons"> <button class="zooming" id="zoom_in">+</button> <button class="zooming" id="zoom_out">-</butto/*n> <button class="panning" id="pan_right">&rarr;</button> <button class="panning" id="pan_left">&larr;</button> <button class="panning" id="pan_top">&darr;</button> <button class="panning" id="pan_top">&uarr;</button> </div> <script> var width = 960, height = 500; var randomX = d3.randomNormal(width / 2, 80), randomY = d3.randomNormal(height / 2, 80); var data = d3.range(2000).map(function() { return [randomX(), randomY() ]; }); var zoom = d3.zoom().scaleExtent([1, 8]).translateExtent([ [ -1000, -500 ], [ 1000, 500 ] ]).on("zoom", zoomed); var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) .append("g") .call(zoom) .append("g"); svg.append("rect") .attr("class", "overlay") .attr("width", width) .attr("height", height); svg.selectAll("circle") .data(data) .enter().append("circle") .attr("r", 2.5) .attr("transform", function(d) { return "translate(" + d + ")"; }); function zoomed() { svg.attr("transform", "translate(" + [d3.zoomTransform(this).x,d3.zoomTransform(this).y] + ")" + "scale(" + d3.zoomTransform(this).k + ")" ); } async function interpolateZoom (translate, scale) { var self = this; await d3.transition().duration(350).tween("zoom", function () { var iTranslate = d3.interpolate([d3.zoomTransform(this).x,d3.zoomTransform(this).y], translate), iScale = d3.interpolate( d3.zoomTransform(this).k, scale); return function (t) { d3.zoomIdentity .scale(scale) .translate(translate); zoomed(); }; }); } function zoomClick() { var clicked = d3.event.target, direction = 1, factor = 0.2, target_zoom = 1, center = [width / 2, height / 2], extent = zoom.scaleExtent(), translate = zoom.translate(), translate0 = [], l = [], view = {x: translate[0], y: translate[1], k: zoom.scale()}; d3.event.preventDefault(); direction = (this.id === 'zoom_in') ? 1 : -1; target_zoom = zoom.scale() * (1 + factor * direction); if (target_zoom < extent[0] || target_zoom > extent[1]) { return false; } translate0 = [(center[0] - view.x) / view.k, (center[1] - view.y) / view.k]; view.k = target_zoom; l = [translate0[0] * view.k + view.x, translate0[1] * view.k + view.y]; view.x += center[0] - l[0]; view.y += center[1] - l[1]; interpolateZoom([view.x, view.y], view.k); } d3.selectAll('button').on('click', zoomClick); </script></code></pre> </div> </div> <p></p> </question> <answer tick="false" vote="0"> <p>您正在使用<strong>D3 V6</strong>。 <pre><code>d3.event.target</code></pre> 一直支持到 <strong>V5</strong>。从 <strong>V6</strong> 开始,使用事件作为回调函数的第一个参数传递:</p> <pre><code>function zoomClick(event) { const clicked = event.target; ... } ... d3.selectAll('button').on('click', zoomClick); </code></pre> </answer> </body></html>

我正在尝试使用 d3js 进行缩放和平移。我附上了下面的代码。我正在使用 d3js v6。 缩放当前无法使用 佐...</desc> <question vote="1"> <p>我正在尝试使用 d3js 进行缩放和平移。我附上了下面的代码。我正在使用 d3js v6。 目前缩放功能无法使用</p> <pre><code><!DOCTYPE html> <meta charset="utf-8"> <title>Zoom + Pan</title> <script src="https://d3js.org/d3.v6.min.js"></script> <style> .overlay { fill: none; pointer-events: all; } button { padding: 10px 20px; } </style> <body> <div id="buttons"> <button class="zooming" id="zoom_in">+</button> <button class="zooming" id="zoom_out">-</butto/*n> <button class="panning" id="pan_right">&rarr;</button> <button class="panning" id="pan_left">&larr;</button> <button class="panning" id="pan_top">&darr;</button> <button class="panning" id="pan_top">&uarr;</button> </div> <script> var width = 960, height = 500; var randomX = d3.randomNormal(width / 2, 80), randomY = d3.randomNormal(height / 2, 80); var data = d3.range(2000).map(function() { return [randomX(), randomY() ]; }); var zoom = d3.zoom().scaleExtent([1, 8]).translateExtent([ [ -1000, -500 ], [ 1000, 500 ] ]).on("zoom", zoomed); var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) .append("g") .call(zoom) .append("g"); svg.append("rect") .attr("class", "overlay") .attr("width", width) .attr("height", height); svg.selectAll("circle") .data(data) .enter().append("circle") .attr("r", 2.5) .attr("transform", function(d) { return "translate(" + d + ")"; }); function zoomed() { svg.attr("transform", "translate(" + [d3.zoomTransform(this).x,d3.zoomTransform(this).y] + ")" + "scale(" + d3.zoomTransform(this).k + ")" ); } async function interpolateZoom (translate, scale) { var self = this; await d3.transition().duration(350).tween("zoom", function () { var iTranslate = d3.interpolate([d3.zoomTransform(this).x,d3.zoomTransform(this).y], translate), iScale = d3.interpolate( d3.zoomTransform(this).k, scale); return function (t) { d3.zoomIdentity .scale(scale) .translate(translate); zoomed(); }; }); } function zoomClick() { var clicked = d3.event.target, direction = 1, factor = 0.2, target_zoom = 1, center = [width / 2, height / 2], extent = zoom.scaleExtent(), translate = zoom.translate(), translate0 = [], l = [], view = {x: translate[0], y: translate[1], k: zoom.scale()}; d3.event.preventDefault(); direction = (this.id === 'zoom_in') ? 1 : -1; target_zoom = zoom.scale() * (1 + factor * direction); if (target_zoom < extent[0] || target_zoom > extent[1]) { return false; } translate0 = [(center[0] - view.x) / view.k, (center[1] - view.y) / view.k]; view.k = target_zoom; l = [translate0[0] * view.k + view.x, translate0[1] * view.k + view.y]; view.x += center[0] - l[0]; view.y += center[1] - l[1]; interpolateZoom([view.x, view.y], view.k); } d3.selectAll('button').on('click', zoomClick); </script> </code></pre> <p></p><div data-babel="false" data-lang="js" data-hide="false" data-console="true"> <div> <pre><code><!DOCTYPE html> <meta charset="utf-8"> <title>Zoom + Pan</title> <script src="https://d3js.org/d3.v6.min.js"></script> <style> .overlay { fill: none; pointer-events: all; } button { padding: 10px 20px; } </style> <body> <div id="buttons"> <button class="zooming" id="zoom_in">+</button> <button class="zooming" id="zoom_out">-</butto/*n> <button class="panning" id="pan_right">&rarr;</button> <button class="panning" id="pan_left">&larr;</button> <button class="panning" id="pan_top">&darr;</button> <button class="panning" id="pan_top">&uarr;</button> </div> <script> var width = 960, height = 500; var randomX = d3.randomNormal(width / 2, 80), randomY = d3.randomNormal(height / 2, 80); var data = d3.range(2000).map(function() { return [randomX(), randomY() ]; }); var zoom = d3.zoom().scaleExtent([1, 8]).translateExtent([ [ -1000, -500 ], [ 1000, 500 ] ]).on("zoom", zoomed); var svg = d3.select("body").append("svg") .attr("width", width) .attr("height", height) .append("g") .call(zoom) .append("g"); svg.append("rect") .attr("class", "overlay") .attr("width", width) .attr("height", height); svg.selectAll("circle") .data(data) .enter().append("circle") .attr("r", 2.5) .attr("transform", function(d) { return "translate(" + d + ")"; }); function zoomed() { svg.attr("transform", "translate(" + [d3.zoomTransform(this).x,d3.zoomTransform(this).y] + ")" + "scale(" + d3.zoomTransform(this).k + ")" ); } async function interpolateZoom (translate, scale) { var self = this; await d3.transition().duration(350).tween("zoom", function () { var iTranslate = d3.interpolate([d3.zoomTransform(this).x,d3.zoomTransform(this).y], translate), iScale = d3.interpolate( d3.zoomTransform(this).k, scale); return function (t) { d3.zoomIdentity .scale(scale) .translate(translate); zoomed(); }; }); } function zoomClick() { var clicked = d3.event.target, direction = 1, factor = 0.2, target_zoom = 1, center = [width / 2, height / 2], extent = zoom.scaleExtent(), translate = zoom.translate(), translate0 = [], l = [], view = {x: translate[0], y: translate[1], k: zoom.scale()}; d3.event.preventDefault(); direction = (this.id === 'zoom_in') ? 1 : -1; target_zoom = zoom.scale() * (1 + factor * direction); if (target_zoom < extent[0] || target_zoom > extent[1]) { return false; } translate0 = [(center[0] - view.x) / view.k, (center[1] - view.y) / view.k]; view.k = target_zoom; l = [translate0[0] * view.k + view.x, translate0[1] * view.k + view.y]; view.x += center[0] - l[0]; view.y += center[1] - l[1]; interpolateZoom([view.x, view.y], view.k); } d3.selectAll('button').on('click', zoomClick); </script></code></pre> </div> </div> <p></p> </question> <answer tick="false" vote="0"> <p>您正在使用<strong>D3 V6</strong>。 <pre><code>d3.event.target</code></pre> 一直支持到 <strong>V5</strong>。从 <strong>V6</strong> 开始,使用事件作为回调函数的第一个参数传递:</p> <pre><code>function zoomClick(event) { const clicked = event.target; ... } ... d3.selectAll('button').on('click', zoomClick); </code></pre> </answer> </body></html>

回答 0 投票 0

有没有办法将Assistant分配给基于D3.js的OrgChart中的节点?

我不熟悉 D3.js,不知道如何为组织图中的节点分配助理角色。有什么可能的机会吗? 我正在尝试创建一个基于 D3.js 的组织结构图并且...

回答 2 投票 0

markmap:将思维导图插入 HTML

我想在 Hugo 上使用思维导图,而 Markmap 正是我想要的。但我对其语法非常陌生。 (参见下面的代码块)我什至不知道它是什么语言(是 typescript-arrow-

回答 3 投票 0

Deneb 格式值,带两位小数和前缀

是否可以在 Deneb 中格式化一个值(我正在使用 Vega-Lite),将 1.000 更改为“1k”或 1.000.000“1M”,并添加该值最多有两位小数 ... &q...

回答 1 投票 0

D3 Force Network - 如何在模拟后应用功能而不仅仅是在拖动后

我有一个用力网络绘制的简单网络,我希望用户在绘制后单独拖动节点。目前,这仅在用户拖动每个节点后才起作用。首先...

回答 1 投票 0

D3 组织图表,带有返回对象 Object 的自定义 React 组件

我正在使用 React 和这个库创建一个组织结构图:https://github.com/bumbeishvili/org-chart。它使用 D3 创建组织结构图。 我想使用自定义 React 组件来设计每个节点的样式...

回答 2 投票 0

在 d3 js 中重现山脊线图时出现问题

我正在尝试在 javascript 中重现 d3 密度岭图,但使用不同的数据集。我正在修改的代码来自 d3 库的文档,可以在这里看到:d3 Density ridge

回答 1 投票 0

如何通过将一个对象的不同属性与另一个对象匹配来查找一个对象的属性

我在 d3 构造中有两个对象: 常量访客 = [ { 名称:“多边形 1”, 总数:342, 红色” ...

回答 1 投票 0

如何查看D3版本?

这个问题并不完全重复,它是非显而易见问题的“翻译中心”: 关于核心版本:这个问题是关于“如何在运行时检查”,但是在t...

回答 2 投票 0

将分层文本(带连字符)转换为 D3.js 的耀斑数据

尝试创建以下内容: ...使用此文本数据: var 输入文本 = ` - A - - b_1 - - - c_1 - - - c_2 -b - - b_2 - - - d_1 - - - d_2 `; 这是代码: JS: 功能

回答 1 投票 0

创建图表的Javascript工具

我想创建一个应用程序(可能使用 javascript 和 d3js),允许创建如下图所示的图表: 从左侧,用户可以在定义的项目列表中选择项目...

回答 1 投票 0

Vue3 - D3 添加到单元格的路径 - 未可视化

我找到了 Mike Bostock 邻接矩阵可视化的 GitHub 版本,使用的是《悲惨世界》中的数据。 我将其转化为Vue3代码,并在这个社区的帮助下,得到了一个功能性的pro...

回答 1 投票 0

D3.js 中的堆叠条形图不堆叠

我是 D3.js 的新手,我正在尝试创建堆叠条形图,但我无法堆叠这些值。当在 .stack() 上调用 .value(([, group], key) => group.get(key).duration) 时,我得到 Typ...

回答 1 投票 0

D3 线充当闭合路径

更新:这是问题的示例 - http://jsfiddle.net/Hffks/2/ 我正在尝试使用 D3 编写折线图,并且我的线在最后关闭,我的意思是它充当闭合路径...

回答 3 投票 0

在 d3 中设置和弦图的最小范围

我正在 d3 中创建一个和弦图,并且有几个值为 0 的和弦组。因此,和弦组被渲染为弧宽接近 0 的条子,这使得添加任何

回答 1 投票 0

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