【发布时间】:2014-05-17 16:45:32
【问题描述】:
我非常喜欢带线条的 David Buezas 饼图,尤其是那些水平线,因为它们提高了可读性:http://bl.ocks.org/dbuezas/9306799。但是标签在那里重叠,线条也可能重叠。
偶然发现http://blog.safaribooksonline.com/2014/03/11/solving-d3-label-placement-constraint-relaxing/(包含很多小提琴,抱歉,发布链接的声誉不够),它解释了如何避免重叠。试图使这个例子适应带有“水平结尾”的标签行,基本上是用<polyline>替换<line>,但失败了。
它显示为
<line>与<polyline>的输出不同,因为我复制了所有属性,但绘制方式不同(可以肯定我没有搞砸)-
我显然不明白 Bueza 示例中的线条是如何切割成文本的。以为我可以通过以下方式解决问题:
- 将
<line>替换为<polyline> - 将
<line>中的属性复制到<polyine>的点属性中 - 通过简单地执行
last x-value + 30来为<polyline>添加绘制一条水平直线的属性 然后通过变换以某种方式调整文本
除了这比 Bueza 的示例优雅得多之外,我也不介意人们不知道水平线是需要向左还是向右(标签可能位于图表)。
- 将
有人可以吗
- 告诉我为什么
<line>的输出与<polyline>不同? - 让 Buezas 示例中的“切片到文本”——对于新手来说更清楚一点?
这是我的尝试:http://jsfiddle.net/HdwTH/40/
非常感谢。
【问题讨论】:
-
你所说的“崩溃”是什么意思?你的意思是重叠吗?
-
是的。这显然不清楚,我改变了它。谢谢拉斯。
-
如果我理解正确,This question 和 this question 会做同样的事情。
标签: javascript d3.js label lines