を使用して D3 で円グラフを作成していd3.layout.pie()
ます。黒い点がなくても、このように見えます (問題を説明するために、Photoshop に手動で配置しました)。表面の真ん中にあるこれらのドットの座標を計算して、そこにいくつかのツールチップを配置するにはどうすればよいのでしょうか。私は完成した解決策を求めているのではなく、それを行う方法の原則についてもっと求めています。ありがとう。
質問する
3258 次
3 に答える
8
次の式を使用して、円周上の点を計算できます。
x = cx + r * cos(a)
y = cy + r * sin(a)
は円(cx, cy)
の中心、r
は半径、a
は角度です。
これを機能させるには、チャートの円スライスに基づいて角度を計算する方法が必要です - 以下を参照してください。
パイ レイアウトの d3 ドキュメントによると、このpie
関数はアークのリストを返すため、このデータを処理して各ポイントを計算できます。
パイ(値[、インデックス])
指定された値の配列で円関数を評価します。オプションのインデックスを指定できます。これは、開始角度関数と終了角度関数に渡されます。戻り値はアーク記述子の配列です
- value - value アクセサーによって返されるデータ値。
- startAngle - ラジアン単位の円弧の開始角度。
- endAngle - ラジアン単位の円弧の終了角度。
- data - この円弧の元のデータム。
おそらく、各円弧に対して と の間の距離の半分を取り、そこに点を配置するendAngle
ことができます。startAngle
価値があるのは、pie.js
各弧を計算するために使用されるコードです。
// Compute the arcs!
// They are stored in the original data's order.
var arcs = [];
index.forEach(function(i) {
var d;
arcs[i] = {
data: data[i],
value: d = values[i],
startAngle: a,
endAngle: a += d * k
};
});
return arcs;
それは役に立ちますか?
于 2013-07-02T13:44:10.967 に答える