0

现在我一直在考虑编写一个灰尘帮助器,它使用自定义灰尘帮助器和节点的 d3 模块将条形图渲染到服务器端的灰尘文件中。我想知道是否有比构造像这样的上下文对象传递给灰尘渲染器更好的方法:

{
  padding: {
    top: integer,
    right: integer,
    bottom: integer,
    left: integer
  },
  width: integer,
  height: integer,
  data: [datum, ...],
  x: {
    scale: {
      type: string, // 'linear', 'time', 'ordinal'
      range: 'extent', // optionally [lower, upper]
      tick: { // if applicable
        format: string, // d3 number format for linear scale
                        // d3 time format for time scale
        args: integer | [interval, integer]
      }
    },
    value: string, // datum[value] used for x-axis
  },
  y: {
    ...
  }
}

依此类推,然后让 d3 使用此方案来呈现自定义组件并将 SVG 标记作为字符串返回。对我来说,这似乎是一个非常冗长的选项,需要添加越来越多的属性,这些属性会使上下文膨胀,直到它变得太混乱而无法很好地管理,这就是为什么我想知道是否有更好的方法来分散灰尘d3 各个组件的助手。

4

1 回答 1

0

我一直在考虑它以及我认为将 d3 用作灰尘过滤器的最佳方法,如下所示:

dust.filters.d3 = function(value) {
    var node = d3.select(value).node();

    if (node) {
        return node.outerHTML;
    }

    return 'd3 selection not found';
};

并且在开始灰尘渲染之前运行 d3 代码。

于 2015-08-08T20:25:35.487 回答