如何最好地使用D3而不重复大量代码?

时间:2014-01-17 06:01:34

标签: graph d3.js visualization data-visualization toolkit

我正在进入数据可视化,并且发现D3的详细程度有点惊讶。最终结果可能非常棒:非常专业的可视化对数据的变化做出很好的反应。但是,我看到人们所做的可视化主要是来自D3 Gallery的千篇一律的克隆。

所以,我想知道是否有办法创建类似的例子,而不是简单地复制所有代码和更改位?在D3之上是否没有库或层? D3 Github中的list of plugins非常没有吸引力。

我想我也在质疑D3最适合的目的,以及什么时候不合适。来自:

的光谱
  1. 标准条形图:使用jqPlot或类似的
  2. 非标准但不新颖的动态可视化(即在图库中复制任何内容):???
  3. 动态或互动的新颖可视化:使用D3
  4. 复制现有的可视化风格是否有比简单复制所有代码更好的方法?是否有一些其他库比jqPlot更可定制,但不需要明确的“这是你如何绘制条形图”D3的方法?

    (对不起措辞不好的问题 - 难以明确我的确切问题。)

1 个答案:

答案 0 :(得分:4)

这是一个非常普遍的问题,但让我来回答一下。我认为最接近你要求的是reusable chart,它旨在以一种你不需要编写大量代码来使用它的方式为特定类型的图表提供代码。 (“很多代码”当然是主观的)。许多D3插件都使用这种模式,所以我认为这就是你要找的。

即使您有可重复使用的图表,也有一定数量的样板代码 可以将所有内容组合在一起。对于完全数据驱动的图形,请查看Vega。 D3的一些冗长也来自于属性名称通常是人类可读的(即很长),并且通常为给定的可视化设置了许多属性。在许多情况下,您也可以在CSS中设置它。

关于何时使用D3的问题,这完全取决于你。我会基本上把D3用在所有东西上,但是我再一次比其他任何东西都熟悉它了。我当然不会说你不应该把它用于标准条形图。尽管代码可能比另一个框架中的代码长一些,但在定制代码时,您有很多选择。当人们使用基于D3的高级库之一并发现他们无法按照自己的方式自定义它时,这实际上就出现了很多。

最后,这里有一些你可能感兴趣的东西。有NVD3,这是我提到的高级库之一。还有d3charts,它有类似的目的。这两者都减少了为简单图表编写的代码量。还有更多,当然,你总是可以将你喜爱的图表包装成可重复使用的布局。