草庐IT

d3-tooltips

全部标签

javascript - 如何避免标签在 D3.js 饼图中重叠?

我正在使用D3.js和一个非常简单的脚本绘制饼图。问题在于,当切片很小时,它们的标签会重叠。我有什么选择可以防止它们重叠?D3.js是否有我可以利用的内置机制?演示:http://jsfiddle.net/roxeteer/JTuej/varcontainer=d3.select("#piechart");vardata=[{name:"Group1",value:1500},{name:"Group2",value:500},{name:"Group3",value:100},{name:"Group4",value:50},{name:"Group5",value:20}];var

javascript - 如何在 D3 圆包中将文本宽度与圆圈大小相匹配

我使用D3显示了一堆不同大小的圆圈,每个圆圈都填充了文本。我坚持找到正确的字体大小,以便文本适合圆圈,具体取决于它的大小和文本的长度。长文本可能应该分成更多行。这是我的代码:vardata={"name":"","children":[{"name":"Thisisatag","value":242},{"name":"Circle","value":162},{"name":"Tree","value":80},{"name":"Mysentenceisverylongandneedsbreaks","value":80},]}vardiameter=300,format=d3.fo

javascript - 我想通过粗细来区分d3.js力图的链接

我想通过粗细来区分链接我有数据。变量“value”表示“thickness”。“值”的范围是0~1。{"nodes":[{"name":"A","group":1},{"name":"B","group":1},{"name":"C","group":1},{"name":"D","group":1},{"name":"E","group":1}],"links":[{"source":0,"target":1,"value":0.9},{"source":0,"target":2,"value":0.8},{"source":0,"target":3,"value":0.7},{"s

javascript - 在 D3 中获取过渡值

我每100毫秒获取一次位置并将它们应用到DOM,如下所示:constdiv=d3.select(container).selectAll('div').data(positions)div.enter().append('div')div.transition().duration(100).style({top:d=>d.y,left:d=>d.x,})div.exit().remove()因此,在获得下一个位置所需的100毫秒内,元素可以平滑地动画到新位置。这很好用。但是我在DOM中有不同的元素,这取决于第一个元素的位置。它们使用相同的位置数据呈现,但在软件的不同模块中。我的问题是

javascript - 将 D3 链接文本显示在右侧

我已经构建了一个D3力导向可视化,在链接上带有文本标签。我遇到的一个问题是,当链接位于其源节点的左侧时,这些标签会上下颠倒。这里的例子:我放置路径和文本的代码如下所示:varnodes=flatten(data);varlinks=d3.layout.tree().links(nodes);varpath=vis.selectAll('path.link').data(links,function(d){returnd.target.id;});path.enter().insert('svg:path').attr({class:'link',id:function(d){retur

javascript - 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)

我正在处理过渡,当过渡应用于不同函数中的选择时,我注意到有些卡顿和闪烁。但是,如果转换与方法链一起应用,它会完全按照规定工作。下面是简单移动一些文本的小例子(Fiddle)。在过渡开始之前,最左边的第一个字符串神奇地传送到页面下方。最右边的第二个字符串从页面顶部到底部平滑过渡。为什么会发生这种“传送”?显然,在单独的函数中应用转换与链接它不同,但有没有办法实现这一点?比方说,我想对许多不同的对象应用相同的过渡——从不同的选择中检索——那么有没有办法在不出现这种卡顿的情况下将过渡降级为它自己的功能?varsvg=d3.select('svg');vartextElem=svg.appen

javascript - 在 D3 转换中获取预期的属性值

例如我有一个转换:varsel=container.selectAll('div').transition().duration(1000).attr('transform','translate(100,500)');在某些时候,我需要知道某些元素落在何处,例如setTimeout(()=>{varvalue=d3.select('div#target').expectedAttr('transform');assertEqual(value,'translate(100,500)');},500);D3中有这样的内置功能吗?否则我将不得不在d3.transition().attr(

javascript - D3 根据节点的文本值进行选择

假设我有一个svg:123我可以使用svg.selectAll()或svg.filter()的什么参数来仅选择值为“2”的文本节点并使用.attr()改变颜色?我找到了很多关于按属性而不是按文本值选择的文献。 最佳答案 text()没有参数是一个getter。因此,在filter中函数,这段代码:d3.select(this).text()==2将被评估为true对于任何值为“2”的元素。这是一个演示:d3.selectAll("text").filter(function(){returnd3.select(this).text(

javascript - 基于边界动态设置初始 d3 缩放 - V4

我有大量节点要显示在页面上,大多数情况下,由于节点放置,圆圈会超出屏幕的可见区域。有没有办法根据节点的整个边界框动态设置初始缩放级别,以便所有节点都适合屏幕的可见区域?更新:我为此添加了一个fiddlehttps://jsfiddle.net/navinleon/6ygaxoyq/3/varsvg=d3.select("svg"),width=+svg.attr("width"),height=+svg.attr("height");varzoom=d3.zoom().scaleExtent([-8/2,4]).on("zoom",zoomed);svg.call(zoom);varg

javascript - 如何使用 d3.js 创建 <dl>

我想使用d3.js从一些数据中创建一系列dl标签。我想出的代码是这样的:varx=d3.select("body").append('ol').selectAll('li').data(data).enter().append('li').append('dl').selectAll().data(d=>Object.entries(d.volumeInfo)).enter();x.append('dt').text(d=>d[0]);x.append('dd').text(d=>d[1]);其中data是一个对象数组。一切正常,只是元素的顺序不正确。这是我设法得到的订单:key1ke