2013-11-22 39 views
2

我想在D3中使用“钻石”符号。 我不确定D3中符号的大小是如何工作的。我的要求是:d3.js钻石符号大小功能

svg = d3.select("svg"); 
svg.append("g").append("path") 
    .attr("d", d3.svg.symbol() 
    .size(function(d) { return 15 }) 
    .type(function(d) { return "diamond" })) 
    .attr("transform", "translate(250, 150)")  
    .style("fill", "black"); 

我想钻石的高度设置为15px。谁可以帮我这个事 ?提前致谢。

+0

你发布的代码不工作? –

+0

嗨拉尔斯,我的要求是将钻石的高度设置为15px。上面的代码生成一个5px宽度和9px高度的钻石:( – Aneesh

回答

0

由于我需要一个确切的高度/宽度,结束了使用这样的事情来获得“d”属性:

if (shape == "triangle") { 
return "M " + dim/2 + " 0 L " + dim + " " + dim + " L 0 " + dim + " " + dim/2 + " 0"; 
} 

if (shape == "diamond") { 
return "M " + dim/2 + " 0 L " + dim + " " + dim/2 + " L " + dim/2 + " " + dim + " L 0 " + dim/2 + " L " + dim/2 + " 0"; 
} 

其中“dim”是高度值。

0

尝试:

.size(function(d) { return 15*15 }) 

documentation

将大小设置访问器,以所指定的功能或恒定在正方形 像素

+0

谢谢Adam!是的,但它看起来并不准确。钻石的尺寸是 - 高度:27.91814613342285,宽度:16.118549346923828,y:136.04092407226562,x :241.9407196044922 – Aneesh

1

由亚当·皮尔斯回答继,我使用下面的代码,这似乎是在所有可用d3.svg.symbol形状(如钻石,十字,广场等),提供一致和准确的结果:

d3.svg.symbol().size(function(d) { 
     return (itemHeight * itemHeight)/2; 
    })) 

其中itemHeight指形状的固定高度。