特定の境界内にある部分のみが表示されるように、円をクリップしようとしています。ただし、円は変換される ag 要素内にあります。クリップ パスを g 要素またはこの要素内のパス (「g.site」または「g.site パス」) に適用すると、円全体が切り取られます。私の問題を示す短い例:
<svg width="600" height="600">
<defs>
<clipPath id="myClip">
<path d="M435.1256860398758,144.76407538624122L419.76193083948306,273.83328117717105L469.9933509829825,301.0396981292212L483.3234271019269,296.67464757752555L535.23683445551,247.72472220603692L574.3496211247055,127.3184557867296Z"
/>
</clipPath>
</defs>
<g id="voronoi">
<g id="cells">
<path class="cell" d="M435.1256860398758,144.76407538624122L419.76193083948306,273.83328117717105L469.9933509829825,301.0396981292212L483.3234271019269,296.67464757752555L535.23683445551,247.72472220603692L574.3496211247055,127.3184557867296Z"
/>
</g>
<g id="sites">
<g class="site" transform="translate(483.29548177370367,267.14072835257724)" clip-path="url(#myClip)">
<path fill="rgba(0, 255, 0, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z"
/>
</g>
<g class="site" transform="translate(483.29548177370367,267.14072835257724)">
<path fill="rgba(0, 0, 255, 0.5)" d="M0,30A30,20 0 1,1 0,-30A30,20 0 1,1 0,30M0,1A1,1 0 1,0 0,-1A1,1 0 1,0 0,1Z"
/>
</g>
</g>
</g>
</svg>
私の問題の実際のデモは、このフィドルにあります: http://jsfiddle.net/xRh6A/
2つの円を追加しました。最初のものは切り取られています (clip-path 属性が設定されているため)。2 つ目は表示されていますが (明らかに) 切り取られていません。
これは、円要素がローカル座標を持ってから変換されるのに対し、クリップパスが絶対用語で定義されるという事実に関連していると思います。変換されたグループで clipPath を使用できますか? または、それらを一致させるためにクリップ パスまたはサークル パスを変更する必要がありますか?
編集「サイト」を絶対座標で配置することで解決しました。ただし、これは、d3.svg.arc (添付の単純化された例でコードを生成している) を使用できないことを意味しました。これは、ローカル座標系で円弧を作成するためです。
それ以外の方法でも解決できるかどうか、私はまだ興味があります。