2010-07-29 4 views
4

내 회사의 맞춤 차트 라이브러리를 구축 중입니다. 다음 요구 사항이 충족되도록 나는 차트 레이블을 배치 할 수있는 좋은 알고리즘을 발명/발견 문제에 봉착 :스마트 원형 차트 레이블 배치 알고리즘?

  • 레이블 관련 슬라이스에 최대한 가깝게 유지해야
  • 레이블을 중복되면 안
  • 레이블을 슬라이스에서 멀리 이동해야하는 경우 레이블을 방사형, 바깥 쪽 방향으로 이동하는 것이 바람직합니다.

는 명확하게하기 위해이 내 책에 오히려 좋은 : 사전에

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

감사합니다!

답변

2

샘플 이미지에서 은 충돌 테스트 (즉, 레이블이 겹칠 수 있음)이 없습니다. 따라서, 알고리즘은 매우 간단합니다 :

  • 파이 센터 반대 방향으로 파이의 일부의 중심에서 시작하는 첫 번째 줄 있습니다. 이 첫 번째 줄은 고정 길이입니다.
  • 번째 행 처음의 각도에 따라 (고정 길이도) 수평이며, 좌우로 제 1 라인의 각도
  • 왼쪽 또는 오른쪽 정렬 텍스트 다음에 따라 진행 줄도.

가장 조화로운 알고리즘이므로 응용 프로그램에서 동일한 알고리즘을 사용할 수 있습니다. 그러나 너무 가까이있는 파이 부분이 여러 개 있으면 텍스트가 겹칠 수 있습니다.

이 문제를 방지하려면 충돌을 테스트 할 수 있습니다. 두 개의 수평선이 너무 가까우면을보고, 은 수평선이 충분히 멀어 질 때까지 첫 번째 줄의 각도를 (또는 가장 가까운 두 부분의 첫 번째 줄의 각도)으로 변경하십시오.

3

MS .net 스택을 사용하고 있다고 가정합니다. 휠을 재발 명하는 것보다 케이스가 그렇다면 Microsoft에서 제공하는 MS Charts 라이브러리를 사용할 수 있습니다. 이와 같이 라이브러리를 만드는 데는 아무런 문제가 없지만 이와 같이 가장자리의 경우에는 완벽하게 만드는 데 약간의 시간이 걸리며, ms 차트 라이브러리는 다소 안정적이며 잘 작동합니다. 그것에 의해 생성 된

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

파이 차트는 꽤 좋다. 라벨 문제에 대해 스마트 라벨이라는 몇 가지 옵션이 있습니다.이 옵션은 겹쳐서 표시하지 않고 라벨을 깔끔하게 정렬합니다.

P. 다운로드에서 모든 샘플을 찾을 수 있습니다.