如何设置d3符号的大小?(.size()对我不起作用)

Mar*_*nce 5 javascript svg d3.js typescript

我无法弄清楚如何设置我的d3符号的大小:

        legendRectE
            .append('path')
            .attr("d", d3.svg.symbol().type((d) => { return d[2] }))
            .style("fill", function (d) {
                return d[1];
            })
            .attr('stroke', 'black');
Run Code Online (Sandbox Code Playgroud)

我尝试使用.size()这样的,但它不起作用:

        legendRectE
            .append('path')
            .attr("d", d3.svg.symbol().type((d) => { return d[2] }))
            .style("fill", function (d) {
                return d[1];
            })
            .attr('stroke', 'black')
            .size(20*20);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用.size()这样的时候,我收到一个错误:[ts] Supplied parameters do not match any signature of call target.

那么在这种情况下如何设置符号的大小呢?

Ger*_*ado 9

你必须size在符号生成器(d3.svg.symbol函数)中定义:

d3.svg.symbol().size(size).type(foo);
//size here-----------^
Run Code Online (Sandbox Code Playgroud)

这是一个演示:

var svg = d3.select("svg");

var sizes = ["10", "50", "100", "200", "500", "1000", "2000"];

sizes.forEach((d, i) => {
  svg.append('path')
    .attr("transform", "translate(" + (10 + (i+1) * (i+1) * 5) + ",100)")
    .attr("d", d3.svg.symbol().size(d).type("diamond"))
    .style("fill", "gold")
    .attr('stroke', 'black');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://d3js.org/d3.v3.js"></script>
<svg></svg>
Run Code Online (Sandbox Code Playgroud)

  • 符号大小的比例或度量单位是什么?如何动态修改它,例如响应过渡序列中的鼠标悬停?谢谢 (2认同)