Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 如何在圆弧路径元素的两端获取箭头?_Svg_D3.js - Fatal编程技术网

Svg 如何在圆弧路径元素的两端获取箭头?

Svg 如何在圆弧路径元素的两端获取箭头?,svg,d3.js,Svg,D3.js,我正在使用d3.svg.arc绘制一段圆,将内外半径设置为相同,并具有一些随机的扫掠角度。现在我想在它的两端都有箭头。标记开始属性工作正常。但问题在于标记端。当我运行代码时,我会在开始时获得两个标记。请帮帮我 <svg version="1.1"> <defs> <marker id="endtriangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" mar

我正在使用d3.svg.arc绘制一段圆,将内外半径设置为相同,并具有一些随机的扫掠角度。现在我想在它的两端都有箭头。标记开始属性工作正常。但问题在于标记端。当我运行代码时,我会在开始时获得两个标记。请帮帮我

<svg version="1.1">
<defs>
    <marker id="endtriangle"
  viewBox="0 0 10 10" refX="0" refY="5" 
  markerUnits="strokeWidth"
  markerWidth="4" markerHeight="3"
  orient="auto">
    <path d="M 0 0 L 10 5 L 0 10 z" />
    </marker>
    <marker id="starttriangle"
  viewBox="0 0 10 10" refX="5" refY="5" 
  markerUnits="strokeWidth"
  markerWidth="4" markerHeight="3"
  orient="auto">
    <path d="M -2 5 L 8 0 L 8 10 z" />
    </marker>
</defs>
</svg>
<script type="text/javascript">
var arc=d3.svg.arc()
    .innerRadius(140)
    .outerRadius(140)
    .startAngle(0)
    .endAngle(Math.PI/3)
d3.select("svg").append("path")
        .attr("d",arc)
        .attr("transform","translate(200,200)")
        .attr("stroke","black")
        .attr("marker-end","url(#endtriangle)")
        .attr("marker-start","url(#starttriangle)")
        .attr("fill","none")
        .attr("stroke-width","10")
        .attr("id","dimen")
</script>
</body>

这似乎是因为D3生成的圆弧路径并不直接适用于此用例

下面是一个示例,我从d属性中删除了大约一半生成的弧路径数据:


顶部路径使用您的示例,底部路径使用已清理的静态版本。与D3路径数据相比的不同之处在于,D3变体包括一个附加的直线命令、几个圆弧命令和一个闭合路径命令。

能否显示svg文件的相关部分?用代码更新了问题。谢谢。但是你是怎么得到路径坐标的??另外,如果我们要绘制多个圆弧段,该怎么办。显然,我们无法计算和更改每个其他段的路径。从检查/复制d3.arc输出中获得,无论如何,如果要生成更接近我静态输出的圆弧路径,只需添加类似于内置d3.arc对象的内容即可。切掉大约一半的弧路径生成器代码,以匹配我小提琴中的静态版本。我对编码是新手。你能用JSFIDLE更新代码吗?谢谢!!我试着在弧形路径中剪切代码,但没有成功。我不知道我哪里出错了。正如Erik所说,d3圆弧命令会生成一个像曲线矩形一样的实体形状,以便于更好地描述。如果希望标记正常工作,则需要了解A/A命令的工作方式。然后自己将它们添加到路径定义中。