1

我正在尝试在两个 SVG 视图之间转换d3.js。目的是能够在显示之间交替:

  • 经典的等值线图(颜色代表测量值的地图)
  • 半径与区域人口成比例的气泡图

在此处输入图像描述

请参阅此处进行演示。

然而,从任意 SVG 路径过渡到(近似的)圆并不简单。我有以下问题:

  1. 地图区域可能包含岛屿或飞地;更一般地说,SVGpath可能包含独立的环。(我原以为d3会将多多边形渲染为几个paths 但没有!)另一方面,一个圆仅由一个环组成。在过渡期间如何平滑较小的多边形?(我认为将环合并在一起太复杂了,不值得。)我考虑过淡化或缩小多边形,但在实践中如何实现呢?因为我不确定是否可以在 a 的d属性中挑出一个环path
  2. 小区域由几个点表示,将这几个点过渡到一个圆上会产生一个顶点太少的多边形,看起来像一个实际的圆(见下图);在 a 的属性中平滑添加点的好策略是什么?dpath;
  3. 或者,也可以将直线过渡到 Bézier 曲线,而不是向虚线添加点(4 个点和足够的锚点已经产生了一个非常好的近似圆)。由于我自己的尝试没有说服力,这里是第三个问题:直线和贝塞尔曲线之间如何过渡?
  4. 最后,在两个方向的过渡开始时,我会在某些(但不是全部)形状中看到尖峰/条纹;知道这可能来自哪里吗?

尖峰 + 多边形效果 尖峰 + 飞地和岛屿

4

0 回答 0