我正在嘗試在d3中創建一個半個圓圈。使用cardinal interpolation會產生一條接近我想要的路徑,但不夠「圓」。我如何編寫我自己的插補器來更好地繞過這條路徑,還是有更好的方法?插值線在d3中製作半個圓弧/弧線
這是我到目前爲止有:http://jsfiddle.net/Wexcode/jEfsh/
<svg width="300" height="500">
<g id="g-1"></g>
<g id="g-2"></g>
</svg>
JS:
var curved = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("cardinal")
.tension(0);
var straight = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear")
.tension(0);
var points = [{x: 70, y: 52.5}, {x: 250, y: 250}, {x: 70, y: 447.5}];
d3.select("#g-1").append("path").attr("d", curved(points));
d3.select("#g-2").append("path").attr("d", straight(points));
這最終是什麼,我決定利用這一點。如果可能的話,我想我仍然想知道如何使用自定義插補器執行此操作。 – Wex
爲什麼不接受,如果這是你的方式? – SuperMykEl
使用d3.arc()創建曲線的問題在於它將兩條線疊在一起。請參閱:http://stackoverflow.com/a/11595157/522877 – Wex