2012-01-15 35 views
6

Tôi quan tâm đến việc sử dụng python để tạo biểu đồ đại diện cho kích thước của các giá trị dựa trên kích thước của hình vuông (và tùy chọn màu của chúng). Về cơ bản, tôi đang tìm cách xem xét một loạt các giá trị như chương trình cũ tốt windirstat với việc sử dụng ổ đĩa cứng (về cơ bản là tạo một hình vuông lớn biểu thị đĩa cứng của bạn và sau đó hình vuông nhỏ hơn tạo ra khu vực bên trong các chương trình khác nhau, hình vuông càng lớn thì tệp càng lớn, màu sắc biểu thị loại tệp). Tôi khá quen thuộc với matplotlib, và tôi không nghĩ rằng nó có thể làm một cái gì đó như thế này với nó. Có gói python nào khác có thể giúp được không? Bất kỳ đề xuất cho một cái gì đó cấp thấp hơn nếu nó không? Tôi đoán tôi có thể làm điều đó bằng tay nếu tôi có thể tìm thấy một cách để vẽ các hộp programatically (Tôi không thực sự quan tâm về định dạng, nhưng tùy chọn để xuất SVG cũng như PNG sẽ được tốt đẹp). Cuối cùng, nó sẽ là tốt đẹp để có nó được tương tác như windirstat, nơi nếu bạn đã di chuột qua một hình vuông cụ thể bạn sẽ có thêm thông tin về nó, và nếu bạn nhấp vào nó có lẽ bạn muốn đi vào và xem trang điểm của hình vuông cụ thể đó. Tôi chỉ quen thuộc với wxpython cho các công cụ GUI, không chắc chắn nếu nó có thể được sử dụng cho một cái gì đó như thế này. Để bây giờ tôi sẽ được hạnh phúc với chỉ outputting họ mặc dù.Đồ thị Python như windirstat?

Cảm ơn rất nhiều! Alex

Chỉnh sửa: Cảm ơn mọi người, cả hai câu trả lời của bạn đều giúp ích rất nhiều.

+2

"Tôi khá quen thuộc với matplotlib, và tôi không nghĩ rằng nó có thể làm một cái gì đó như thế này với nó." Đó sẽ là những hạn chế của matplotlib? Tôi nghĩ rằng nó có thể rút ra sqaures kích thước khác nhau ... – joaquin

+0

Vâng tôi đoán tôi đang tìm một cái gì đó giống như một sơ đồ Hinton, mà [MatPlotLib có thể vẽ] (http://www.scipy.org/Cookbook/Matplotlib/HintonDiagrams) , nhưng không có khoảng trống giữa các hộp. Nó sẽ giống như một biểu đồ hình tròn, nhưng hình vuông. –

Trả lời

7

Bạn đang tìm kiếm các thuật toán Treemapping. Sau khi thực hiện, bạn có thể chuyển đổi đầu ra (mà nên là hình chữ nhật) thành vẽ các lệnh đến bất kỳ thứ gì có thể vẽ các hình chữ nhật được phân lớp.

Edit:

Thêm liên kết và thông tin:

Nếu bạn không nhớ đọc giấy tờ, trình duyệt dựa trên d3 thư viện cung cấp cho Bản đồ cây 'squarified' (js implementation). Họ tham chiếu bài báo này theo số Bruls, Huizing, and van Wijk. (Đây cũng là trích dẫn 3 trên bài viết wikipedia)

Tôi sẽ tìm kiếm trên các thuật toán được liệt kê trên bài viết Wikipedia được liên kết. Ví dụ: chúng cũng liên kết đến bài viết this, mô tả thuật toán cho "các hình ảnh cây hỗn hợp". Bài báo cũng bao gồm một số phần thú vị ở cuối mô tả biến đổi thành các hình dạng khác không phải hình chữ nhật.

Squarified chắc chắn dường như là loại phổ biến nhất xung quanh. Các liên kết trên nên cung cấp cho bạn đủ để làm việc hướng tới một giải pháp hoặc thậm chí, trực tiếp chuyển sang triển khai d3. Tuy nhiên, chi phí của mô hình grokking d3 (mà là một cái gì đó giống như một hình thức khai báo của jQuery) có thể hơi cao. Thoạt nhìn, mặc dù, việc thực hiện xuất hiện tương đối đơn giản.

+0

Rất tốt, vâng tôi nghĩ rằng Dựng hình là chính xác những gì tôi đang tìm kiếm. [Danh sách này] (http://en.wikipedia.org/wiki/List_of_treemapping_software) có vẻ là tất cả các công cụ độc quyền, bạn có biết nếu có bất kỳ tùy chọn nguồn mở nào không? –

1

Squaremap thực hiện việc này. Tôi đã không sử dụng nó (tôi chỉ biết nó từ RunSnakeRun) và tài liệu của nó là thiếu nghiêm trọng, nhưng có vẻ như để làm việc.

+0

Cảm ơn điều đó trông giống như những gì tôi đang tìm kiếm và tôi đã tải xuống nó, nhưng bạn đúng tài liệu là khá ... không tồn tại. –

+0

Thử giải mã nguồn RunSnakeRun hoặc có thể liên hệ với tác giả. Nó có thể là rất nhiều công việc, nhưng có lẽ không nhiều như viết cùng một điều trên của riêng bạn - và có thể bạn thậm chí có thể cải thiện tình hình một khi bạn hiểu được mã. –

Các vấn đề liên quan