graph - 如何在不重复大量代码的情况下最好地使用 D3?

标签 graph d3.js visualization data-visualization toolkit

我正在研究数据可视化,并且有点惊讶地发现 D3 是如此冗长。最终结果可能会很棒:非常专业的可视化,可以很好地响应数据的变化。但我看到人们所做的大多数可视化都是来自 D3 Gallery 的千篇一律的克隆。 .

所以,我想知道是否有一种方法可以创建类似的示例,而不是简单地复制所有代码并更改位?没有在 D3 之上构建的库或层吗? list of plugins D3 Github 中的内容相当平淡。

我想我也在质疑 D3 最适合什么用途,什么时候不适合。类似光谱的东西:

  1. 标准条形图:使用 jqPlot 或类似工具
  2. 非标准但不新颖的动态可视化(即复制图库中的任何内容):???
  3. 新颖的动态或交互式可视化:使用 D3

是否有比简单复制所有代码更好的方法来复制现有的可视化样式?是否有其他库比 jqPlot 更具可定制性,但不需要 D3 的显式“这是如何绘制条形图”方法?

(很抱歉这个措辞不当的问题 - 无法阐明我的确切问题是什么。)

最佳答案

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

即使您有可重用的图表,您也需要编写一定数量的样板代码来将所有内容连接在一起。对于完全数据驱动的图表,请查看 Vega 。 D3 的一些冗长还来自这样一个事实:属性名称通常是人类可读的(即相当长),并且通常需要为给定的可视化设置许多属性。在许多情况下,您也可以在 CSS 中进行设置。

至于何时使用D3,这完全取决于你。基本上所有事情我都会使用 D3,但话又说回来,我对它比其他任何东西都熟悉得多。我当然不会说您不应该将它用于标准条形图。尽管代码可能比其他框架中的代码长一些,但在自定义它时您有很多选择。当人们使用基于 D3 的高级库之一并发现他们无法按照自己想要的方式自定义它时,这种情况实际上经常出现。

最后,这里有一些您可能感兴趣的内容。有 NVD3 ,这是我提到的高级库之一。还有d3charts ,具有类似的目的。这两者都减少了您为简单图表编写的代码量。还有更多,当然,您始终可以将您最喜欢的图表包装在可重用的布局中。

关于graph - 如何在不重复大量代码的情况下最好地使用 D3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178928/

相关文章:

matlab - 在 MATLAB 中计算测地距离

javascript - 如何在 nvd3 中对栏进行排序?

javascript - d3.js : Responding to Mousewheel zooms Appropriately

python - 绘制具有离散分量的分布的直方图

.net - 从mp3/wav文件生成声波图像?

algorithm - 大树数据结构是如何遍历的?

python - 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

javascript - 如何访问另一个svg下面的svg?

python - 如何为 kmeans 中的簇分配颜色?

java - 具有 N 个标记顶点和 K 个未标记边的简单连通图的数量