草庐IT

javascript - d3 刻度轴两侧的刻度线

我试图让刻度线显示在y轴的两侧。正如下面的代码所示,我可以根据长度-width来扩展刻度线,它从一个起点从左到右绘制刻度线。是否可以将刻度线的起点进一步向左移动?我的意图是美观,但让刻度值直接在刻度线的长度上。我设置了一个网格,由容器长度的刻度线组成://AxisvarxAxis=d3.svg.axis().scale(x).orient("bottom").tickSize(-height);varyAxis=d3.svg.axis().scale(y).orient("left").tickSize(-width).tickFormat(d3.format("s"));基于这些量表

javascript - D3 v4 获取元素的翻译值

这个问题在这里已经有了答案:Howcand3.transformbeusedind3v4?(6个答案)关闭6年前。当我在一个元素上运行d3.select(this).attr("transform")时,我得到一个响应translate(20.00,778)。但是我需要获取翻译的各个值。在v3中,可以使用vart=d3.transform(element.attr("transform"));t.translate;但是d3.transform在v4中不可用。如何达到同等效果?

javascript - D3 : zoom to bounding box with d3-tiles

我已经成功地将D3(矢量)map分层放置在从Mapbox中提取图block的d3-tile(光栅)map之上。手动缩放效果完美,矢量和光栅同步。我现在正在尝试实现MikeBostock'zoom-to-bounding-box'功能,应用程序可在用户单击时放大所需的国家/地区。我想我快到了,但现在似乎不匹配,可以这么说,map缩小到外太空。我在这个jsfiddle中重现了这个问题.我需要在“缩放”功能中进行哪些修改才能使map按预期正确缩放?我认为这就是问题所在:vector.selectAll("path").attr("transform","translate("+[transf

javascript - 在 native react 中绘制 d3 轴

我想用axis=d3.axisLeft(scale)在Shape组件中如果未设置渲染上下文,d3-shape中的形状组件返回路径是很常见的,React-Native中就是这种情况有可能以某种方式获得对react节点上下文的访问权限吗?路径不是一个可行的选择,因为轴将是一组项目,而不是路径 最佳答案 我一直在研究这个——我的理解是不可能一起使用d3轴和react-nativeARTShapes。您可以将d3-shape与ARTShapes一起使用,因为d3-shape函数返回由ARTShape解释的字符串。这些字符串在这里得到了很好的

javascript - 在 d3 for javascript 中,如何为数据创建不同的元素?

例如,在html中,一个可能包含和.您将如何将数据绑定(bind)到一个行选择,该行选择将创建偶数列作为奇数为? 最佳答案 所以,这看起来也不完美,但总有html()方法。​vard=[['a','b','c','d']];varr=d3.select('#myTable').selectAll('tr').data(d);r.enter().append('tr').html(function(d){vari,s='';for(i=0;i':'';s+=d[i];s+=(i%2===0)?'':'';}returns;}​​​​​

javascript - d3.js:限制画笔的大小

有没有办法限制画笔的大小,即使范围更大?我整理了一个只有x比例尺的画笔,可以移动和调整大小。我希望能够限制用户可以调整大小的范围(基本上只能达到某个点)。在下面的示例中,当画笔大于最大范围的一半时,画笔函数将停止更新。但是,刷子本身仍然可以扩展。有没有办法防止这种情况发生?或者有更好的方法来处理这个问题吗?非常感谢!在此处查看此代码:http://bl.ocks.org/3691274(编辑:此演示现在有效)bar=function(range){varx_range=d3.scale.linear().domain([0,range.length]).range([0,width])

javascript - 使用 D3 创建 DIV 的动态列表

我一直在使用D3创建精美的动画图表,示例很棒。但是,我正在尝试做一些看似更基本的事情,但遇到了麻烦-将数据绑定(bind)到一个简单的DIV列表。我设置了enter()来初始化不透明度为0的元素,transition()来淡入它们,exit()来淡出并删除它们。enter()和exit()似乎工作正常-然而,当更新包含列表中已有的现有元素时,它似乎被部分删除-包含DIV仍然存在,但内容消失了。我不明白为什么元素的内容会以这种方式改变。我的代码如下:vardata=[...];sorted=data.sort(function(a,b){returnd3.descending(a.id,

javascript - d3 中身份函数 ("function(d) { return d; }"的简写是什么?

查看d3文档,我看到这段代码(身份函数)到处重复:function(d){returnd;}d3中是否有内置方法来执行此操作?我知道我可以创建自己的无操作身份函数并在任何地方使用它,但似乎d3应该提供这个。 最佳答案 我想知道为什么没有d3.identity函数作为库的一部分,而且找不到没有的理由。从性能的Angular来看,定义恒等函数比重用Object构造函数提供更好的性能。如果您在不同类型之间重用相同的标识函数,则差别不大。一些performancetestsarehere.所以在我的例子中,我滥用了D3并自己添加了函数:d3

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