草庐IT

javascript - 将使用 D3js 创建的 SVG 转换为 PNG

我有一些用D3js创建的图表,我想通过JavaScript将其转换为PNG图像,以便用户可以下载图表。我见过将SVG转换为Canvas并将Canvas转换为图像的解决方案。这对我不起作用,因为SVG使用类来设置元素的样式(由于可维护性,我宁愿不更改),这会导致整个Canvas变成黑色并带有非常粗的线条。是否可以将SVG图表直接转换为PNG?该页面位于RubyonRails项目中,因此它不必是纯JavaScript解决方案,但我更愿意使用JavaScript来执行此操作,这样我也可以在其他项目中实现它。 最佳答案 要在Canvas中显

javascript - 使用 d3.js 计算 CSV 文件的行数

假设我有这个CSV文件Day,What2013-10-27,Apple2013-10-27,Cake2013-10-27,Apple2013-10-28,Apple2013-10-28,Apple2013-10-28,Blueberry2013-10-28,Orange我想用D3.js绘制一个时间序列图。我需要做的就是显示每天的行数总和。例如,11月27日的值应为3,28日的值应为4。有什么方法可以存档吗?我一直在尝试从CSV数据集创建一个新数据集,但没有取得积极成果。vardataset;d3.csv("data.csv",function(d){return{Day:newDate

javascript - IE 11 - console.log 显示对象属性未定义

这是一个非常简短的示例。我将下面的代码复制并粘贴到一个文件中,保存并打开它。在Chrome中工作正常,在ie11中失败。控制台上的输出是胡说八道!这是怎么回事?是否偶然发现了一些奇怪的错误?test.b显然不是未定义的,因为它可以通过JSON解析器和直接对象评估访问。此外,切换日志函数中变量的顺序不会改变未定义的test.b。wtfvartest={a:1,b:{c:1}}console.log(test,JSON.stringify(test),test.b);WTFIE 最佳答案 我最近也遇到了这个问题。问题是我正在处理的页面将

javascript - D3和双向数据绑定(bind)

我对使用datadrivendocuments的当前最佳实践和解决方案感兴趣具有双向AJAX数据绑定(bind)的库。更具体地说,我想知道如何d3最好与支持双向数据绑定(bind)的库集成,例如Angular或Knockout.出现的明显冲​​突源于以下事实:d3和AJAX库都将数据插入到DOM,这基本上意味着一个必须包装另一个。 最佳答案 关于DOM上的数据您担心插入DOM的数据。这是一些添加的属性:D3js:__data__,__onmouseover.force,__onmouseout.force,__onmousedown

javascript - 不寻常的 d3 放大可重用类 - this 和 bind

一段时间以来,我一直在为这个问题绞尽脑汁......我在js中有一个常用的构造函数/原型(prototype)对象(如类),它包含我所有的d3图表逻辑:figureGen=function(html_element){this.svg=d3.select(html_element).append('svg').style('width','100%').style('height','100%').append('g').attr("class","sadrzalac").attr("transform","translate("+0+","+0+")");this.element=e

Javascript/JQuery 放置事件未在 Internet Explorer IE 11 中触发

我正在将图像从不同的浏览器选项卡拖放到我的网页的选项卡中。我的“放置”事件的事件处理程序在除InternetExplorer11之外的所有其他桌面浏览器中均有效。IE只是导航到我放置的图像的URL,而不是触发“放置”事件并让我的JS代码用它做它想做的事(就像在Windows7上的Chrome、Firefox、Opera和Safari中发生的那样).代码如下。请注意,代码中列出的警报均未触发。我什至遵循了Microsoft页面上给出的建议:https://msdn.microsoft.com/en-us/library/ms536929(v=vs.85).aspx关于取消“dragent

javascript - Windows/IE11 中范围元素的 getBoundingClientRect 不正确

在IE11中使用范围对象获取BoundingClientRect时,它会报告错误的数字。它报告高度为128,而实际高度为74。它报告顶部偏移为8,而实际顶部偏移为35。这是一个已知错误吗?有没有办法在windowsie11中获得准确的选择数字。vardiv=document.querySelectorAll('div')[0];vart=div.childNodes[0];varrange=document.createRange();range.setStart(t,0)range.setEnd(t,1)console.log(range.getBoundingClientRect(

javascript - 使用 D3.js 的分组堆栈图

我是D3的新手,遇到了一些问题。想知道是否有人可以提供帮助。我正在尝试使用d3创建分组堆栈图。该图的性质是每组有2个柱,第二个柱的值取决于第一个柱。我希望第二个栏是我在第一个栏上的分割。一个简单的例子是,如果第一条上的值是{x:0,y:3,y0:0},第二条应该是{x:0,y:1,y0:0},{x:0,y:1,y0:1},{x:0,y:1,y0:2}因此对于第一个条形图绘制的数据:{"series":"A","values":[{"x":0,"y":1,},{"x":1,"y":2,},{"x":2,"y":3,},{"x":3,"y":1,},{"x":4,"y":3,}]},{"s

javascript - 强制 d3 折线图忽略空值

我有一个包含空值的时间序列折线图,因此在我的线条中留下了空白。我想要做的是选择性地让d3线生成器忽略空值并跨越间隙。如图所示,蓝色系列有间隙。我的部分问题是我已经对这种数据格式进行了标准化:[{"x":1397102460000,"y0":11.4403,"y1":96.5},{"x":1397139660000,"y0":13.1913,"y1":96.5},{"x":1397522940000,"y1":96.5},...]因此,当一个系列具有特定时间戳的读数时,另一个系列具有空值。最终,我可以尝试通过在绘制之前过滤我的数据来解决这个问题,但我希望有一个更聪明的解决方案,也许是关于

javascript - Microstrategy 使用可视化作为选择器 D3 服装图表

我正在尝试使用可视化作为D3服装图表上的选择器。我正在按照此处的SDK文档进行操作,但无法使我的示例正常工作。基本上,我通过声明“我”var并启用“用作过滤器”选项来加注星标。varme=this;this.addUseAsFilterMenuItem();然后,在附加desvg元素时,我添加了clear和endselecion方法:varg=d3.select(this.domNode).append("svg").attr("width",width+margin.left+margin.right).attr("height",height+margin.top+margin.b