2012-01-15 2 views
6

파이썬을 사용하여 사각형의 크기 (및 선택적으로 색상)에 따라 값의 크기를 나타내는 다이어그램을 만드는 데 관심이 있습니다. 기본적으로 좋은 오래된 프로그램과 같은 값들의 묶음에 대한 개요를 만드는 방법을 찾고 있습니다. windirstat 하드 드라이브 사용법 (기본적으로 harddrive를 나타내는 큰 사각형을 만든 다음 그 안에 작은 영역을 나타내는 작은 사각형을 나타냅니다. 다른 프로그램은 사각형이 클수록 파일이 커지고 색상은 파일의 유형을 나타냄). 나는 matplotlib에 상당히 익숙하며, 이와 같은 것을 할 수 있다고 생각하지 않는다. 거기에 도움이 될 다른 파이썬 패키지가 있습니까? 그렇지 않다면 더 낮은 레벨에 대한 제안은 무엇입니까? 프로그래밍 방식으로 상자를 그릴 수있는 방법을 찾으면 수동으로 할 수있을 것 같아요. (형식을 신경 쓰지는 않지만 SVG와 PNG를 내보낼 수있는 옵션이 좋을 것 같습니다).windirstat와 같은 파이썬 그래프?

궁극적으로, windstat와 같은 대화식으로 설정하는 것이 좋을 것입니다. 특정 사각형 위로 마우스를 가져 가면 더 많은 정보를 얻을 수 있으며, 클릭하면 정보를 볼 수 있습니다. 그 특정한 광장의 화장. 나는 GUI와 관련된 wxpython에 대해서만 잘 알고 있으며, 이런 식으로 사용될 수 있을지는 확실하지 않다. 당분간 나는 그들을 출력하는 것에 만족할 것이다.

고맙습니다. 알렉스

편집 : 감사합니다. 두 답변 모두 도움이되었습니다.

+2

"matplotlib에 상당히 익숙하며, 이와 같은 것을 할 수 있다고 생각하지 않습니다." matplotlib의 한계점은 무엇입니까? 나는 그것이 다른 크기의 sqaures를 그릴 수 있다고 생각합니다 ... – joaquin

+0

글쎄, 나는 [MatPlotLib가 그릴 수있는] Hinton 다이어그램과 같은 것을 찾고 있다고 생각합니다. (http://www.scipy.org/Cookbook/Matplotlib/HintonDiagrams) 상자 사이에 공백이 없어야합니다. 원형 차트와 비슷하지만 사각형입니다. –

답변

7

Treemapping 알고리즘을 찾고 있습니다. 일단 구현되면 출력 (직사각형이어야 함)을 계층화 된 직사각형을 그릴 수있는 명령으로 변환 할 수 있습니다.

편집 :

더 많은 링크와 정보 :

당신이 서류를 읽고 괜찮다면, 브라우저 기반의 d3 라이브러리 제공 'squarified'트리 맵 (js implementation)합니다. 그들은이 논문을 Bruls, Huizing, and van Wijk으로 참조합니다. (위키 백과 문서의 인용문 3)

링크 된 위키피디아 문서에 나열된 알고리즘을 검색하고 싶습니다. 예를 들어, 그들은 또한 "mixed treemaps"에 대한 알고리즘을 설명하는 this 문서에 링크합니다. 이 논문은 직사각형 이외의 다른 형태로의 변형을 설명하는 흥미로운 부분도 포함합니다.

Squarified는 확실히 가장 일반적인 다양성 인 것으로 보입니다. 위의 링크를 통해 솔루션을 개발하거나 d3 구현을 직접 포팅 할 수 있습니다. 그러나, d3 모델을 grokking하는 비용 (jQuery의 선언적 형식과 같은)은 다소 높을 수 있습니다. 언뜻보기에는 구현이 상대적으로 단순 해 보입니다.

+0

니스, 그래요. Treemapping이 제가 찾고있는 것 같아요. [이 목록] (http://en.wikipedia.org/wiki/List_of_treemapping_software)은 독점적 인 것으로 보입니다. 오픈 소스 옵션이 있는지 알고 계십니까? –

1

Squaremap 나는 그것을 사용하지 않았다 (나는 단지 RunSnakeRun에서 그것을 안다). 그리고 그 문서는 심각하게 부족하다. 그러나 그것은 일하는 것처럼 보인다.

+0

고마워요. 내가 찾고있는 것처럼 보이고 다운로드도되었지만, 문서가 꽤 ... 존재하지 않는다고합시다. –

+0

RunSnakeRun 소스를 해독하거나 저자에게 문의하십시오. 그것은 많은 일이 될 수 있지만, 같은 일을 혼자서 쓰는 것만 큼은 아닙니다. 코드를 이해하고 나면 상황을 개선 할 수도 있습니다. –

관련 문제