d3 clipPath - 为什么它会切断图表的顶部?
d3 clipPath - why is it cutting top of charts off?
我有一个图形,上面有三个折线图。
我在图表中添加了一个 clipPath,覆盖了所有三个折线图。但是每个折线图的顶部都被砍掉了。
我已经根据其他 SO 答案将 .nice() 添加到 y 轴,这有助于但没有解决问题。当你用时间部件放大时,效果非常明显:在线条的最高点,2px 的线条正在变细。摆脱 clip-path 的属性 returns 线条以达到适当的效果。
cG.append("path")
.attr("class","line line1")
.attr("stroke",palette.basic[0])//predicted
.attr("clip-path", "url(#clip)")
.attr("d",line1[q](pricesPredicted));
有谁知道为什么会这样或如何阻止它?
谢谢
问题是 clipPath
和您正在裁剪的元素未在同一坐标系中定义,并且未进行相同的变换。
所有 3 个图表都是从左上角开始绘制的。想象一下,它们全部绘制在彼此之上。
然后,应用 clipPath
并截断图表。
最终图表被翻译到它们的位置。
这是一个例子:
<svg>
<defs>
<clipPath id="clipPath">
<rect x="0" y="0" width="100" height="100" />
</clipPath>
</defs>
<circle cx="10" cy="10" r="20" style="clip-path: url(#clipPath);" transform="translate(10 10)" />
</svg>
您应该尝试将相同的转换应用于您正在应用于图表的 clipPath
。
我有一个图形,上面有三个折线图。
我在图表中添加了一个 clipPath,覆盖了所有三个折线图。但是每个折线图的顶部都被砍掉了。
我已经根据其他 SO 答案将 .nice() 添加到 y 轴,这有助于但没有解决问题。当你用时间部件放大时,效果非常明显:在线条的最高点,2px 的线条正在变细。摆脱 clip-path 的属性 returns 线条以达到适当的效果。
cG.append("path")
.attr("class","line line1")
.attr("stroke",palette.basic[0])//predicted
.attr("clip-path", "url(#clip)")
.attr("d",line1[q](pricesPredicted));
有谁知道为什么会这样或如何阻止它?
谢谢
问题是 clipPath
和您正在裁剪的元素未在同一坐标系中定义,并且未进行相同的变换。
所有 3 个图表都是从左上角开始绘制的。想象一下,它们全部绘制在彼此之上。
然后,应用 clipPath
并截断图表。
最终图表被翻译到它们的位置。
这是一个例子:
<svg>
<defs>
<clipPath id="clipPath">
<rect x="0" y="0" width="100" height="100" />
</clipPath>
</defs>
<circle cx="10" cy="10" r="20" style="clip-path: url(#clipPath);" transform="translate(10 10)" />
</svg>
您应该尝试将相同的转换应用于您正在应用于图表的 clipPath
。