草庐IT

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 - 从 Web Worker 内部运行 window.crypto.getRandomValues()

我已经无计可施了。知道网络worker无法访问window对象,有什么办法可以做到这一点吗?请帮忙! 最佳答案 我知道这是一个老问题,但我偶然发现了这个问题,事情发生了变化。大多数浏览器现在都支持网络worker中的加密。在webworkers中,您可以访问self,它不包含所有“窗口”属性(尤其是与dom无关的属性),但包含加密函数等API方法。因此,您可以从webworker中简单地访问self.crypto.getRandomValues()。我做了一个fiddle作为例子:http://jsfiddle.net/jbrosi

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 - 如何在整个 Web 应用程序堆栈中利用 Haskell 类型安全?

我想知道以CRUD为中心的Web应用程序可以从Haskell的类型系统中获益多少,尤其是当前端是使用JavascriptMVC框架(如AngularJS传递无类型数据对象)构建时。在我看来,一旦将Haskell数据类型转换为JSON对象,并将其传递给繁重的JavaScriptMVC框架层,将Haskell的类型系统作为Web堆栈的一部分的好处就会开始急剧下降,因为没有让类型检查器确保通过整个Web应用程序的数据流的类型完整性的方法。例如,您可以更改数据库模式和关联的Haskell类型,但类型检查器无法告诉您JavaScriptMVC前端的哪些部分也需要更新。我认为这是一个问题。我是否正

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