【问题标题】:How to draw line with arrow using d3.js如何使用 d3.js 用箭头画线
【发布时间】:2016-08-03 10:10:37
【问题描述】:

我无法使用 d3.js 绘制带箭头的线。我确实看过一些教程并编写了这段代码,但我只看到没有箭头标记的行。任何人都可以看看它并告诉我我在哪里失踪。提前致谢。

var w = 300;
var h = 300;
var svg = d3.select("body")
  .append("svg")
  .attr("width", w)
  .attr("height", h);

//arrow
svg.append("svg:defs")
  .append("svg:marker")
  .attr("id", "triangle")
  .attr("viewBox", "0 -5 10 10")
  .attr("refX", 15)
  .attr("refY", -1.5)
  .attr("markerWidth", 6)
  .attr("markerHeight", 6)
  .attr("orient", "auto");

//line              
svg.append("line")
  .attr("x1", 100)
  .attr("y1", 100)
  .attr("x2", 200)
  .attr("y2", 100)          
  .attr("stroke-width", 1)
  .attr("stroke", "black")
  .attr("marker-end", "url(#triangle)");

【问题讨论】:

    标签: javascript html d3.js


    【解决方案1】:

    将您的标记创建更改为以下内容:

    svg.append("svg:defs").append("svg:marker")
        .attr("id", "triangle")
        .attr("refX", 15)
        .attr("refY", -1.5)
        .attr("markerWidth", 6)
        .attr("markerHeight", 6)
        .attr("orient", "auto")
        .append("path")
        .attr("d", "M 0 -5 10 10")
        .style("stroke", "black");
    

    执行此操作后,您会看到正在绘制一条线。如果您想要一个实心箭头,您可能想要使用fill 而不是stroke,您可以使用以下代码获得:

    svg.append("svg:defs").append("svg:marker")
        .attr("id", "triangle")
        .attr("refX", 6)
        .attr("refY", 6)
        .attr("markerWidth", 30)
        .attr("markerHeight", 30)
        .attr("orient", "auto")
        .append("path")
        .attr("d", "M 0 0 12 6 0 12 3 6")
        .style("fill", "black");
    

    【讨论】:

    • 如何调整标记沿线的位置? (以及标记的大小)?
    猜你喜欢
    • 2015-09-28
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2016-08-26
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多