私はSVG、Canvas、CSS3のスキルが非常に限られています。私は運がない角度2でドーナツチャートを作成しようとしています。利用可能なライブラリがいくつか用意されていますが、私たちはサードパーティーのライブラリをプロジェクトに取り込むことはできません。誰かが正しい方向で私を指し示すことができるか、それを手伝ってもらえますか?私はSVGで遊んでいましたが、 SVGの円弧要素角度2でドーナツチャートを作成する
3
A
答えて
7
これは、ストロークダッシュアレイとストロークダッシュオフセット付きのSVGを使用すると簡単に行うことができます。 rは半径である2πRによって決定される円の
<svg height="100%" width="100%" viewBox="0 0 120 120">
<circle *ngFor="let item of items;let i=index" cx="60" cy="60" r="50" fill="transparent" stroke-width="20"
[attr.stroke-dasharray]="getPerimeter(50)" [attr.stroke-dashoffset]="getOffset(50,i)" [attr.stroke]="getColor(i)"/>
</svg>
基本的perimiter - :あなたのドーナツ成分HTMLで次のコードを含みます。
export class DonutComponent{
items:Array<{name:string,count:number,color:string}>=[
{name:'Orange',count:50,color:'orange'},
{name:'Apple',count:25,color:'red'},
{name:'Pear',count:15,color:'green'}
];
private _total:number =0;
constructor() {
if(this.items.length>0)
{
this._total = this.items.map(a=>a.count).reduce((x,y)=>x+y);
}
}
getPerimeter(radius:number):number
{
return Math.PI*2*radius;
}
getColor(index:number):string
{
return this.items[index].color;
}
getOffset(radius:number,index:number):number
{
var percent=0;
for(var i=0;i<index;i++)
{
percent+=((this.items[i].count)/this._total);
}
var perimeter = Math.PI*2*radius;
return perimeter*percent;
}
}
項目 - :どのようなポイントで指定しますオフセットストロークダッシュは新しいセグメントのstart.Thisは、あなたのTSファイルperimeter.In合計から、前のセグメントによって占められる周囲長の割合を差し引いて計算することができなければなりませんドーナツを汎用化する場合は、コンポーネントへの入力として作成することができます
githubに一般的なソースコードを追加しました。
関連する問題
- 1. 角度2のプロジェクトでレイアウトを作成
- 2. ドーナツチャートvbaを作成する
- 3. 角度2 - 私は、角2でフォームを作成しました
- 4. コンポーネント2を角度2でグローバルに作成する方法は?
- 5. オブジェクトを角度2でプログラムで作成する
- 6. 角度2とイオン2にリスナーを作成するには
- 7. Loadingスピナーの作成角度2
- 8. 角度2 "https"リクエストの作成方法
- 9. ドーナツチャートの角チャートドリルダウンオプション
- 10. 角度2でダイナミックルータリンクを作成する方法は?
- 11. 角度2のブートストラップモーダルでGoogleオートコンプリートを作成する方法+?
- 12. 角度2で子ルートを作成する方法は?
- 13. 角度2でポップオーバー画面を作成する方法
- 14. 角度2でGUIDを作成する方法は?
- 15. 角度素材2でフラットアイコンボタンを作成する方法は?
- 16. 角度2経路サービスでルータオブジェクトを作成する方法は?
- 17. 角度でサービスを作成する
- 18. ナビゲーションルートを使用してヘッダコンポーネントを作成する角度2
- 19. Particles.jsは、角度2でunclickable画面を作成します。
- 20. ダイナミックUIコンポーネントを作成する:角度2とIonic2
- 21. 角度2のノードパッケージを作成する方法は?
- 22. 角度2コンポーネントを動的に作成する方法は?
- 23. 動的フォーム用のカスタムバリデータを作成する角度2
- 24. 角度2 | MDLコンポーネントを動的に作成する
- 25. 角度2のディレイを作成する方法
- 26. 角度2 - dbからグローバル変数を作成する
- 27. クラスの配列を作成する角度2
- 28. ブートストラップ成功メッセージ - 角度2
- 29. 角度2グローバル成分
- 30. 角度2の成分
Krishnanunni Jeevanさん、ありがとうございました。中心にテキストを置いて設定可能にすることが可能かどうか疑問に思っていた – user3113816
私はgithubのソースコードを中心にテキストを表示して更新しました –
これはすばらしい解決策です。 私はこの円を少し修正して、最初の円弧の始点が0ではなく90度になるようにしようとしています。これを行う方法に関する提案はありますか? – Ankit