SVGパスのArcコマンドで円グラフのスライスを描く

moveto、lineto、arcコマンドを使用して円グラフのスライスを作成します。角度とパーセンテージから弧の端点を計算する方法を学びます。

Icons

詳細な説明

Arcコマンドによる円グラフのスライス

円グラフのスライスは円のセクター(扇形)で、M(移動)、L(直線)、A(円弧)コマンドの組み合わせで描画します。

計算式

角度startAngleからendAngle(ラジアン)、半径r、中心(cx, cy)のスライスの場合:

startX = cx + r * cos(startAngle)
startY = cy + r * sin(startAngle)
endX   = cx + r * cos(endAngle)
endY   = cy + r * sin(endAngle)
largeArcFlag = (endAngle - startAngle > PI) ? 1 : 0

パスのテンプレート

M cx,cy L startX,startY A r,r 0 largeArcFlag,1 endX,endY Z

例:25%スライス(90度)

中心(50, 50)、半径40の円で、0度から90度のスライス:

M 50,50 L 90,50 A 40,40 0 0,1 50,90 Z
コマンド 説明
M 50,50 中心に移動
L 90,50 弧の開始点(右、0度)まで直線
A 40,40 0 0,1 50,90 弧の終了点(下、90度)まで円弧
Z 中心に閉じる

50%以上のスライスの処理

スライスが180度を超える場合、large-arc-flagを1に設定します:

# 75%スライス(270度):
M 50,50 L 90,50 A 40,40 0 1,1 50,10 Z

ドーナツチャートのバリエーション

ドーナツスライスには内側の弧を追加します:

M outerStartX,outerStartY
A outerR,outerR 0 largeArc,1 outerEndX,outerEndY
L innerEndX,innerEndY
A innerR,innerR 0 largeArc,0 innerStartX,innerStartY Z

内側の弧ではsweepフラグが反転していることに注意してください。

ユースケース

円グラフのスライスは円グラフ、ドーナツチャート、ラジアルプログレスインジケーター、サーキュラーメニューの構成要素です。弧のフラグの計算を理解することはSVGベースのデータビジュアライゼーションライブラリに不可欠です。

試してみる — SVG Path Editor

フルツールを開く