Treemap python geeksforgeek

Là một người đam mê trăn cuồng nhiệt, gần đây tôi muốn tạo một sơ đồ cây sẵn sàng xuất bản trong python. Treemapping thường được sử dụng để hiển thị dữ liệu phân loại, phân cấp bằng cách sử dụng các hình chữ nhật lồng nhau. Mỗi lá của sơ đồ cây là một phiên bản hình chữ nhật, phong cách của biểu đồ hình tròn trực quan hóa dữ liệu phân loại. Tuy nhiên, tài liệu có sẵn về cách tạo sơ đồ cây, đặc biệt là cách tạo sơ đồ cây đẹp mắt, rất ít…

Mục đích của bài viết này là chia sẻ mẹo và thủ thuật để tùy chỉnh sơ đồ cây được tạo bằng gói Squarify. ¹ Bài viết tập trung vào sơ đồ cây cấp độ lá, không lồng nhau …chưa. [Nếu quan tâm đến một bài viết về làm tổ, hãy bình luận bên dưới. ]. Tuy nhiên, tương tự như hướng dẫn sơ đồ Venn, nhiều thủ thuật trong số này áp dụng cho bất kỳ gói nào được xây dựng trên Matplotlib [e. g. Seaborn, cốt truyện, v.v. ]. Hướng dẫn này có thể hỗ trợ bạn trong việc tùy chỉnh sơ đồ cây một cách hiệu quả để tạo đồ họa sẵn sàng cho xuất bản, bảng điều khiển hoặc báo cáo. Notebook đầy đủ được lưu trữ trên GitHub

Tập dữ liệu sau đây là tập dữ liệu đồ chơi được sử dụng để minh họa cách bạn sử dụng dữ liệu từ khung dữ liệu gấu trúc một cách nhanh chóng trong sơ đồ cây. Điều quan trọng cần lưu ý là bạn không cần sử dụng khung dữ liệu. Trên thực tế, sẽ nhanh hơn nếu sử dụng danh sách. Tuy nhiên, tôi đã sử dụng cấu trúc được sử dụng rộng rãi để sử dụng hiệu quả trong các ứng dụng quy mô lớn hơn. Sử dụng đoạn mã sau, tôi đã tạo một trường hợp đơn giản. ba nhóm mục A, B, C

Các thành viên trong nhóm [e. g. person1, person2,…] không phải là duy nhất trong trường hợp này. Ví dụ: người1 là thành viên của cả ba nhóm [A, B và C] và được tính nhiều lần. Đối với mục đích của bài tập trực quan hóa dữ liệu, nó không liên quan, nhưng khi áp dụng cho dữ liệu của bạn, hãy ghi nhớ điều này

Được tạo bởi tôi bằng Datawrapper

Đoạn mã sau chuyển đổi dữ liệu từ định dạng trên sang định dạng cô đọng, được nhóm

Hình dung

Bây giờ, chúng ta bắt đầu áp dụng trực quan cho trường hợp 3 hình chữ nhật rất đơn giản

Sử dụng bảng prep_df, chúng tôi sử dụng Squarify để chuẩn hóa dữ liệu đếm cho hình vuông 3x3 [hình dx x dy]. Sau đó, chúng tôi vẽ các giá trị được chuẩn hóa, các nhãn, sử dụng các màu bão hòa hoàn toàn [alpha=1] và áp dụng phần đệm giữa các hình chữ nhật [phần đệm=True]

Chúng tôi kết thúc với một số ô vuông có vị trí đẹp, nhưng không ai tỉnh táo sẽ đưa âm mưu này cho ông chủ của họ

Mặc định, được tạo bởi tác giả

Tiếp theo, chúng tôi loại bỏ trục. Tôi cảm thấy bình tĩnh hơn khi làm điều đó. Chúng tôi có thể tùy chỉnh màu văn bản và kích thước văn bản cho các nhãn bằng cách sửa đổi từ điển rcParams trong kết xuất Matplotlib bên dưới. Ở đây mình gọi matplotlib là mpl và chỉnh giá trị của font cho. kích thước và phông chữ. phím màu. Tôi cũng chỉ định danh sách các màu mà tôi muốn Squarify vẽ theo cách thủ công. Cốt truyện này trông sạch sẽ hơn nhiều

Màu sắc và phông chữ thủ công, được tạo bởi tác giả

Bây giờ, chúng ta có thể đang vội. Nếu chúng tôi không muốn chọn màu theo cách thủ công, chúng tôi có thể sử dụng một bộ màu được chọn ngẫu nhiên từ các bản đồ màu Matplotlib. Tuy nhiên, một số trong những số liệu này trông đẹp và một số trông rất tệ. May mắn thay, bạn chỉ có thể thử các loại hạt ngẫu nhiên khác nhau cho đến khi bạn có được màu ưng ý. Cái này ổn

Các màu ngẫu nhiên, do tác giả tạo ra Các bản đồ màu Matplotlib hoạt động trên Trái đất như thế nào?

Để hiểu cách sử dụng bản đồ màu cơ bản, hãy xem bên dưới. Thay vì các giá trị ngẫu nhiên, đối với mỗi ô vuông, chúng ta có thể sử dụng một số bất kỳ trong khoảng từ 0 đến 1. Điều duy nhất là các số trong danh sách phải khác nhau

Sử dụng số nhóm mà chúng ta có len[counts]=3, chúng ta có thể tiếp tục và tạo một danh sách tuần tự các giá trị từ 0 đến 1 bằng cách sử dụng khoảng cách 1/3 để giữ cho mỗi giá trị khác biệt. Dưới đây trong Out[9], nó cho thấy bạn có một danh sách 3 phần tử. 0, 0. 33, 0. 66

Tiếp theo, chúng ta có thể ánh xạ từng giá trị của i thành giá trị màu RGBA [đỏ, lục, lam, độ mờ] bằng cách sử dụng bảng Colormap. Matplotlib có một thư viện gồm nhiều Bản đồ màu để lựa chọn. Tôi đã sử dụng bản đồ màu 'plasma', đây là đối số của hàm cmap. Vai trò của hàm cmap là lấy đầu vào trong khoảng [0,1] và chuyển đổi nó thành RGBA. Các giá trị đỏ, lục, lam nằm trong khoảng [0,1] thay vì [0, 255] mà bạn có thể quen thuộc. Kết quả này tạo ra danh sách lồng nhau mà chúng tôi gọi là mapped_list, danh sách này vẫn chứa 3 phần tử cấp cao nhất. Mỗi phần tử là một bộ RGBA

Cuối cùng, chúng tôi vẽ đồ thị bằng cách sử dụng danh sách được ánh xạ làm đối số màu trong hàm Squarify. Điều này cho thấy rằng chúng ta có thể sử dụng bản đồ màu và vẫn có một số mức độ kiểm soát với chúng. Sử dụng một bản đồ màu không cần phải đoán và kiểm tra nỗ lực

Plasma Colormap, được tạo bởi tác giả

Bây giờ, đối với bất kỳ báo cáo thích hợp nào, chúng tôi cần thêm tiêu đề. Nhưng nếu chúng ta gắn bó với các tùy chọn mặc định, chúng ta sẽ kết thúc với trình giữ chỗ không thỏa mãn này vì phông chữ của hình có màu trắng. Nếu chúng ta thay đổi màu phông chữ, chúng ta sẽ có văn bản nhãn xấu xí. bắt 22. Nhưng đừng bao giờ sợ hãi, Kate ở đây

Tiêu đề giữ chỗ, được tạo bởi tác giả

Trước khi chúng tôi sử dụng các kỹ thuật tiêu đề trong ô phụ, cách dễ nhất mà tôi đã tìm thấy để thêm tiêu đề vào một hình đơn lẻ là thêm một hộp văn bản bổ sung. Chúng ta có thể tùy chỉnh căn chỉnh để căn giữa hình và tùy chỉnh thứ tự vẽ đồ thị [zorder] để đảm bảo nó vẽ đồ thị trên văn bản tiêu đề màu trắng bên dưới

Lưu ý tọa độ. Chúng tôi vẽ hộp tiêu đề ở vị trí [50, 100]. Tọa độ của [0,0] bản đồ đến khu vực dưới cùng bên trái của hình. [100, 0] ánh xạ tới khu vực dưới cùng bên phải của hình

Tiêu đề được thêm dưới dạng văn bản tùy chỉnh, được tạo bởi tác giả

Trước khi chúng tôi tiến hành phân vùng, tôi muốn chú ý đến thực tế là có nhiều tùy chọn tùy chỉnh hơn có sẵn. rcParams thường không được sử dụng trong hướng dẫn, nhưng chúng rất dễ truy cập. Để biết những gì bạn có thể tùy chỉnh, chỉ cần gọi các phím của từ điển rcParams

mpl.rcParams.keys[]

Một số tùy chọn có sẵn để tùy chỉnh trong rcParams, được in bởi tác giảLeveling Up with Subplots

Cuối cùng, cách hữu ích nhất để sử dụng Squarify là tạo các sơ đồ cây phức tạp. Để tăng độ phức tạp, thường cần phải ghép nhiều bản đồ cơ bản lại với nhau. Mỗi hình cơ bản có thể được tùy chỉnh bằng tất cả các kỹ thuật đã thảo luận trước đó. Chúng tôi sẽ vẽ 6 ô riêng biệt bằng cách sử dụng chuỗi 8 hình chữ nhật được tạo ngẫu nhiên. Có nhiều cách để tùy chỉnh từng subplot. Đối với mã, bấm vào đây để chỉ con số này hoặc ở đây cho toàn bộ sổ ghi chép

Ô phụ hình ảnh

  1. Cài đặt mặc định
  2. Chỉ định màu thủ công. Điều này dẫn đến việc lặp lại 2 màu cho toàn bộ hình. Điều này thú vị cho mục đích nghệ thuật nhưng có khả năng gây hiểu lầm cho mục đích giải thích
  3. Các màu được chỉ định sử dụng các kỹ thuật tương tự từ trước
  4. Thêm nhãn theo thứ tự
  5. Thêm các giá trị không chuẩn hóa
  6. Thêm cả nhãn và giá trị và thay đổi kích thước phông chữ

Nhiều ô con sử dụng Squarify, do tôi tạo

Cuối cùng, bạn có thể xóa khoảng trắng giữa các ô con và tiêu đề để tạo sơ đồ cây tổng hợp

Các ô con cô đọng, do tôi tạo ra

Thủ thuật cuối cùng của tôi, thưa quý vị và các bạn, tôi sử dụng Seaborn color_palette thay vì bản đồ màu Matplotlib để tự động tạo bảng màu. Seaborn thường chứa nhiều bộ sưu tập phối màu chuyên nghiệp hơn Matplotlib và chúng ta có thể sử dụng chúng dễ dàng với Squarify. Ngoài ra, chúng ta có thể thay đổi thứ tự của thứ tự màu bằng cách gọi hàm np. flip[] trong danh sách ánh xạ màu của chúng ta [xem dòng 18]

Các ô trừu tượng với bảng màu Seaborn, được tạo bởi tác giả

Hướng dẫn này là một bài tập [1] để tìm hiểu một công cụ trực quan mới và [2] để làm cho matplotlib bớt khó sử dụng hơn. Vui lòng bình luận bên dưới nếu có các tùy chỉnh cụ thể mà bạn muốn xem. Các hướng dẫn cộng đồng của Medium rất tuyệt vời và hướng dẫn của tôi được lấy cảm hứng từ những ví dụ tuyệt vời như thế này

Chủ Đề