2012-01-15 15 views
6

Jestem zainteresowany wykorzystaniem Pythona do tworzenia diagramów reprezentujących rozmiar wartości w oparciu o rozmiar kwadratów (i opcjonalnie ich kolor). Zasadniczo szukam sposobu, aby dokonać przeglądu kilku wartości, takich jak dobry stary program windirstat przy użyciu twardego dysku (zasadniczo tworzy on duży kwadrat reprezentujący dysk twardy, a następnie mniejsze kwadraty tworzące obszar wewnątrz niego reprezentujący różne programy, im większy kwadrat, tym większy plik, kolor wskazuje na typ pliku). Jestem dość zaznajomiony z matplotlib i nie sądzę, że można z nim zrobić coś takiego. Czy istnieje inny pakiet python, który mógłby pomóc? Jakieś sugestie dotyczące czegoś o niższym poziomie, jeśli tak nie jest? Sądzę, że mógłbym zrobić to ręcznie, gdybym mógł znaleźć sposób na rysowanie skrzynek programowo (nie bardzo zależy mi na formacie, ale opcja eksportu SVG i PNG byłaby miła).Python graph like windirstat?

Ostatecznie fajnie byłoby mieć interaktywność, tak jak w przypadku windirstat, gdzie, jeśli miałbyś zawisnąć nad konkretnym kwadratem, otrzymasz więcej informacji na ten temat, a jeśli klikniesz na niego, może wejdziesz i zobaczysz makijaż tego konkretnego kwadratu. Jestem zaznajomiony tylko z wxpythonem dla GUI, nie jestem pewien, czy można go użyć do czegoś takiego. Na razie byłbym zadowolony z ich wypuszczenia.

Wielkie dzięki! Alex

Edytuj: Dzięki chłopaki, zarówno twoje odpowiedzi bardzo pomogły.

+2

"Jestem dość obeznany z matplotlib i nie sądzę, że można z nim zrobić coś takiego." Jakie byłyby ograniczenia programu matplotlib? Myślę, że mógłby narysować sqaures różnej wielkości ... – joaquin

+0

Cóż, myślę, że szukam czegoś takiego jak diagram Hintona, który [MatPlotLib może narysować] (http://www.scipy.org/Cookbook/Matplotlib/HintonDiagrams) , ale bez spacji między polami. Byłoby bardziej jak wykres kołowy, ale kwadratowy. –

Odpowiedz

7

Poszukujesz algorytmów Treemapping. Po zaimplementowaniu można przekształcić dane wyjściowe (które powinny być prostokątami) w polecenia drukowania do wszystkiego, co może narysować warstwowe prostokąty.

Edit:

Więcej linki i informacje:

Jeśli nie przeszkadza czytanie dokumentów, przeglądarka oparte d3 biblioteka przewiduje Diagramy 'squarified' (js implementation). Odwołują się do tego artykułu przez Bruls, Huizing, and van Wijk. (Jest to także cytat 3 na artykule wikipedii)

Chciałbym przeszukać algorytmy wymienione w łączonym artykule w Wikipedii. Na przykład link do artykułu this, który opisuje algorytm "mieszanych treemaps". Artykuł zawiera również interesujące części na końcu opisujące transformacje w kształty inne niż prostokątne.

Squarified z pewnością wydaje się być najczęstszą odmianą wokół. Powyższe linki powinny dać ci wystarczająco dużo, aby pracować nad rozwiązaniem, a nawet bezpośrednio portować implementację d3. Jednak koszt grokowania modelu d3 (który jest czymś w rodzaju deklaratywnej formy jQuery) może być nieco wysoki. Na pierwszy rzut oka wdrożenie wydaje się stosunkowo proste.

+0

Fajnie, tak, myślę, że Treemapping jest dokładnie tym, czego szukam. [Ta lista] (http://en.wikipedia.org/wiki/List_of_treemapping_software) wygląda na całą zastrzeżoną rzecz, czy wiesz, czy są jakieś opcje open source? –

1

Squaremap robi to. Nie użyłem go (znam go tylko z poziomu RunSnakeRun), a jego dokumentacja jest mocno nieobecna, ale wygląda na to, że działa.

+0

Dzięki temu wygląda to, czego szukam, a ja go pobrałem, ale masz rację, dokumentacja jest piękna ... nie istnieje. –

+0

Spróbuj odszyfrować źródło RunSnakeRun lub skontaktuj się z autorem. Może to być dużo pracy, ale prawdopodobnie nie tyle samo, co pisanie tego samego - i może nawet poprawisz sytuację, gdy zrozumiesz kod. –