4

会社用のカスタム チャート ライブラリを構築しています。次の要件が満たされるように、チャート ラベルを配置するための適切なアルゴリズムを見つけたり発明したりするのに苦労しています。

  • ラベルを重ねてはいけません
  • ラベルは、関連するスライスのできるだけ近くに配置する必要があります
  • ラベルをそのスライスから移動する必要がある場合は、できれば放射状の外側方向に移動する必要があります。

明確にするために、これは私の本ではかなり良いです:

http://betterdashboards.files.wordpress.com/2009/02/piechartpercentagelabel1a.png

前もって感謝します!

4

2 に答える 2

2

サンプル画像では、衝突テストはありません(つまり、ラベルが重なる場合があります)。したがって、アルゴリズムは非常に簡単です。

  • パイの一部の中心から、パイの中心とは反対の方向に始まる最初の線があります。この最初の行は固定長です。
  • 2 番目のは水平 (これも固定長) で、1 番目の線の角度に応じて左右に移動します。
  • 最初の行の角度に応じて、左または右に配置されたテキストに従います。

最も調和のとれたものと思われるため、アプリケーションで同じアルゴリズムを使用できます。ただし、近すぎるパイ部分がいくつかある場合、テキストが重なることがあります。

これを避けるために、衝突をテストすることができます。2 本の水平線が近すぎるかどうかを確認し、水平線が十分に離れるまで、最初の線の角度 (またはおそらく最も近い 2 つのパイ部分の最初の線の角度)を変更します。

于 2010-07-29T16:27:26.213 に答える
2

MS .net スタックを使用していると思います。その場合は、車輪を再発明するのではなく、Microsoft が提供する MS Charts ライブラリを使用できます。そのため、ライブラリの作成に問題はありませんが、このようなエッジ ケースでは完全なものにするのに時間がかかりますが、ms チャート ライブラリは多かれ少なかれ安定しており、かなりうまく機能します。

http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&displaylang=en

それによって生成された円グラフはかなり良いです。ラベル付けの問題については、スマート ラベルと呼ばれるオプションがあり、重複することなくラベルをきれいに配置します。

PS ダウンロードでは、すべてのサンプルを見つけることができます。

于 2010-07-29T16:33:17.590 に答える