2012-01-15 15 views
6

Python kullanarak karelerin büyüklüğüne (ve isteğe bağlı olarak renklerine) göre değerlerin boyutunu temsil eden diyagramlar yapmak istiyorum. Temel olarak, eski sürücü programı windirstat'un sabit sürücü kullanımıyla yaptığı gibi değerlerin bir kısmının gözden geçirilmesini sağlamanın bir yolunu arıyorum (temel olarak harddrive'ınızı temsil eden büyük bir kare ve daha sonra içindeki alanı oluşturan küçük kareler oluşturur. farklı programlar, daha büyük kare daha büyük dosya, renk dosya türünü gösterir). Matplotlib ile oldukça tanıdık ve bunun gibi bir şey yapmanın mümkün olduğunu düşünmüyorum. Yardımcı olabilecek başka bir python paketi var mı? Değilse daha düşük bir şey için herhangi bir öneriniz var mı? Kutuları programatik olarak çizmenin bir yolunu bulsam (eğer formatı gerçekten umursamıyorum, fakat SVG'nin yanı sıra PNG'yi ihraç etme seçeneği de güzel olurdu) elle yapabilirim sanırım.Python grafiği windirstat gibi mi?

Nihayetinde, windirstat'ın etkileşimli olması güzel olurdu, eğer belli bir karenin üzerinde gezindiyseniz, üzerine daha fazla bilgi edinirseniz ve üzerine tıklarsanız belki içeri girip göreceksiniz. o belirli karenin makyajı. GUI materyalleri için sadece wxpython'a aşinayım, böyle bir şey için kullanılıp kullanılamayacağından emin değilim. Şimdilik sadece onları çıkarmaktan memnun olurum.

Çok teşekkürler! Alex

Düzeltme: Teşekkürler, her iki cevabınız da çok yardımcı oldu.

+2

"Matplotlib ile oldukça aşina olduğumu ve bununla böyle bir şey yapmanın mümkün olduğunu düşünmüyorum." Matplotlib'in sınırlamaları hangileri olurdu? Ben farklı boyutlarda sqaures çizebileceğini düşünüyorum ... – joaquin

+0

Ben sanırım [MatPlotLib çizebilir bir Hinton diyagramı gibi bir şey arıyorum (http://www.scipy.org/Cookbook/Matplotlib/HintonDiagrams) ama kutular arasındaki boşluklar olmadan. Daha çok bir pasta grafik, ama kare gibi olurdu. –

cevap

7

Treemapping algoritmalarını arıyorsunuz. Bir kez uygulandığında, (dikdörtgenler olmalıdır) çıktıyı katmanlı dikdörtgenler çizebilecek herhangi bir şeye çizim komutları haline dönüştürebilirsiniz.

Düzenleme:

diğer bağlantılar ve bilgi:

Gazeteleri okurken sakıncası yoksa, tarayıcı tabanlı d3 kütüphane sağlar 'squarified' Treemaps (js implementation) için. Bu makaleye Bruls, Huizing, and van Wijk numaralı telefondan başvurmaktadırlar. (Bu ayrıca wikipedia makalesinde alıntı 3'tür)

Bağlantılı Wikipedia makalesinde listelenen algoritmaları araştırırdım. Örneğin, "karışık treemaps" için bir algoritma açıklayan this makalesine de bağlanırlar. Makalede ayrıca, dönüşümleri diğer dikdörtgen şekillere dönüştüren bazı ilginç bölümler de vardır. Karşıtlık kesinlikle etraftaki en yaygın çeşitlilik gibi görünmektedir. Yukarıdaki bağlantılar, bir çözüme doğru çalışacak veya hatta doğrudan d3 uygulamasını gerçekleştirecek kadar yeterli bilgiyi vermelidir. Ancak, d3'ün modelinin maliyeti (jQuery'nin bildirimsel formu gibi bir şey) biraz yüksek olabilir. İlk bakışta, uygulama nispeten basit görünüyor.

+0

Güzel, evet Treemapping'in tam olarak aradığım şey olduğunu düşünüyorum. [Bu liste] (http://en.wikipedia.org/wiki/List_of_treemapping_software) herhangi bir açık kaynak seçeneği olup olmadığını biliyor musunuz? –

1

Squaremap bunu yapar. Kullanmamıştım (sadece RunSnakeRun'dan biliyorum) ve belgeleri ciddi şekilde eksik ama işe yarıyor gibi görünüyor.

+0

Baktığım gibi gözüküyor ve indirdiğim için teşekkürler, ama haklısınız belgelerin güzel ... yok. –

+0

RunSnakeRun kaynağının şifresini çözmeyi veya yazarla bağlantı kurmayı deneyin. Çok fazla iş olabilir, ama muhtemelen aynı şeyi kendi başınıza yazmanız kadar değil - belki de kodu anladıktan sonra durumu iyileştirebilirsiniz. –

İlgili konular