私は長い間 echart を使用していますが、上記のようなスタイルの円グラフが表示されると、このモードでは echart を使用するのが難しくなります。 d3 と Canvas をそれぞれ使用して円グラフを描画してみました。Canvas に慣れており、D3 も軽量化の原則に基づいてプラグインを導入する必要があるため、Canvas カプセル化を使用しました。
公式の円グラフ モードは 2 つあります: (1) 半径モード (2) エリア モード
実装プロセス(1) カプセル化された関数は次のとおりです。
functiondrawCircle(canvasId, option) { const color_arr = option.color let data_arr = option.data const pi2 = Math.PI * 2; let Canvas = document.getElementById(canvasId); let c = Canvas.getContext(2d); startAgl = 0; let agl = 0; const cW = キャンバス幅 = Canvas.height; for (let item of data_arr) { sum += item.value * 1.0 } data_arr = data_arr.map((v, i) => { return { name: v.name, value: (v.value) * 1.0 / sum } }) for (let i = 0; i < data_arr.length; i++) { //円グラフを描画 let min = (cW > cH ? cH : cW); //キャンバスの幅と高さの最小値を取得します agl = data_arr[i].value * pi2 + startAgl; //終了点 c.drawingStyle = color_arr[i].value; * min * 0.3; // 線の太さ c.beginPath() c.arc(cW / 2, cH / 2, min * 0.3, startAgl, agl, false); // 円を描画します。 c.stop(); c.closePath(); // 凡例を描画します。 c.fillStyle = color_arr[i]; 50 + 18 * i, 16, 16); c.fillText(data_arr[i].name, cW * 0.8 + 20, 62 + 18 * i);
(2) 呼び出し方法:
let color = ['#0580F2', '#FAA732', '#E1575D', '#8B73CC', '#8CD123', '#4B53BA', '#429588']; let オプション = { color: color, data: [ { 名前: '20'、値: '20' }、{ 名前: '30'、値: '30' }、{名前: '40', 値: '40' }, { 名前: '50', 値: '50' }, { 名前: '60', 値: '60' }, ] }drawCircle('myCanvas', オプション)
以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。また、VeVb Wulin Network をご支援いただければ幸いです。