イメージをドーナッツチャートに塗りつぶし、その中心からイメージを60度回転させようとしています。D3.jsパターンが円弧またはドーナツグラフで機能しない
私はこの方法でパターンとして単純な形状を塗りつぶして成功しましたが、パターンイメージはすべてねじれて、ドーナツチャートに適用されると繰り返します。イメージは300px x 300pxです。これはsvgと同じサイズです。 The final result should look like this。
私はなぜこれが正直に動作しますが、私は、パターン要素の幅と高さを変更し、patternUnits属性を削除したとき、私は目的の外観を達成することができました正確にはわからないimgPath = "http://www.mikeespo.com/statDonkey/inner.png";
w = 300;
h = 300;
passingPercent = 60;
rotateStartPosition = 50;
var myScale = d3.scale.linear().domain([0, 100]).range([0, 2 * Math.PI]);
// MAKES SVG
var svg = d3.select("body")
.append("svg")
.attr("id", "svg_donut")
.attr("width", w)
.attr("height", h);
// MAKE DEFS
var defs = d3.select("#svg_donut")
.append("defs");
// MAKES PATTERN
defs.append('pattern')
.attr('id', 'pic1')
.attr('width', 300)
.attr('height', 300)
.attr('patternUnits', 'userSpaceOnUse')
.append('svg:image')
.attr('xlink:href', imgPath)
.attr("width", 300)
.attr("height", 300)
.attr("transform", "rotate(60 150 150)")
.attr("x", 0)
.attr("y", 0);
// CREATES VARIABLE *VIS* TO SVG
var vis = d3.select("#svg_donut");
// DEFINES DONUT GRAPH
var arc = d3.svg.arc()
.innerRadius(95)
.outerRadius(140)
.startAngle((myScale(0 + rotateStartPosition)))
.endAngle((myScale(passingPercent + rotateStartPosition)));
// APPENDS *VIS* TO SVG
vis.append("path")
.attr("id", "passing")
.attr("d", arc)
.attr("fill", "white")
.attr("transform", "translate(150,150)")
.attr("fill", "url(#pic1)");
感謝を。私は変更を加えましたが、画像がぼやけて消えてしまいました。 [ここの例を見てください](http://www.mikeespo.com/statDonkey/blur.png)明るい色と暗い色の間にはっきりした線があるはずです。 [Orginal image](http://www.mikeespo.com/statDonkey/inner.png) –
ソリューションを編集しました。うまくいけば、これはそれを解決する – Evan
魅力のように動作します。もう一度、エヴァンありがとう。 –