【发布时间】:2014-01-21 10:51:02
【问题描述】:
我正在尝试使用沿圆圈本身流动的文本标记circle pack layout 中的一些圆圈。
这是一个实验性的jsfiddle:
如您所见,可以沿圆形呈现文本,在其顶部居中。尽管浏览器对弯曲 SVG 文本的渲染很糟糕。但假设我们不关心它。
这是另一个jsfiddle
我想在这个图表上放置弯曲的标签,在这些条件下:
- 圆圈代表一个省(仅深度==1)(不列颠哥伦比亚省、阿尔伯塔省等)
- 该省所有儿童的人数之和(即分配的议会席位数)大于 5。
- 省名应全部大写。
您可以在代码本身中看到我的一些尝试。我已经尝试了几个小时。我的主要问题是圆圈中的圆圈现在位于 X Y 空间中的某个位置,而在第一个 jsfiddle 中,所有圆圈的中心都在坐标系原点。
也许你可以通过重新审视这个来帮助我。
基础数据基于此表:
(注意:这与我前几天问的问题'Circle packs as nodes of a D3 force layout'有些相关,但这是一个独立的实验。)
我决定使用常规的 SVG 弧而不是 d3.svg.arc()。我仍然认为这是一个正确的决定。但是,这就是我现在所拥有的::) jsfiddle
【问题讨论】:
-
一个快速说明:由于将 cx 和 cy 属性分配给 var arc,因此引发了异常。如果您将这两个注释掉,那么标签会全部显示在左上角(您提到的坐标问题)。这可能是显而易见的,并且您已经通过实验知道了一些事情,但想指出作为一个健全性检查。
-
是的,这是一种“开发”的例子,所以这是正常的。 :) 我知道所有捆绑在那个角落的文本。这实际上是我的问题——如何把它放在正确的地方。感谢您引起我的注意,现在其他人也会知道发生了什么... :)
-
关于 attr
startOffset = "<length>",docs 说:如果给出的不是百分比(这是你给它的),那么 'startOffset' 代表在当前用户坐标系中测量的沿路径的距离。按照文档,然后一个登陆distance along a path。目前,这似乎是 textPath 元素与指定 x,y 坐标的可能性之间的唯一联系。希望这不是兔子的踪迹 -
我认为这里的 d3.svg.arc() 是一个障碍。除了在 (0,0) 中具有中心之外,它不能被定义。在我看来,切换到常规 SVG arc 会起作用。
-
在你修复它之前,我很快就把你最新的小提琴分叉了!我将它存储起来,以便绘制有关巴西 Cangaço 的任何未来故事的可能性。这是这些人中的famous picture :) 抱歉,有点轻浮……工作太努力了……
标签: javascript svg d3.js label circle-pack