Dùng color_palette() để phân tách danh mục rõ ràng, cubehelix_palette() cho dữ liệu tuần tự tăng dần, và diverging_palette() để thể hiện rõ sự phân kỳ quanh điểm giữa.
Trong trực quan hóa dữ liệu, chọn màu phù hợp cũng quan trọng như chọn đúng loại biểu đồ hay cách biểu diễn dữ liệu. May mắn là Python giúp bạn tìm bảng màu phù hợp với Seaborn một cách dễ dàng. Hãy đọc tiếp để hiểu cách tạo hình ảnh vừa giàu thông tin vừa bắt mắt và dễ tiếp cận.
Nếu bạn mới học Python, hãy cân nhắc bắt đầu với khóa học Giới thiệu về Python hoặc lộ trình kỹ năng Lập trình Python. Những tài nguyên này sẽ cung cấp cho bạn các kỹ năng cần thiết để theo dõi ví dụ và khai thác đầy đủ khả năng của Seaborn.
Ghi chú nhanh về các yếu tố cơ bản của màu sắc
Có ba thành phần chính xác định mọi màu sắc: sắc độ (hue), độ bão hòa (saturation) và độ sáng (value). Mỗi thành phần đều quan trọng vì chúng truyền tải các loại thông tin khác nhau.
Hue
Hue là thứ ta thường nghĩ đến khi nói "màu" — đó là màu thuần như đỏ, xanh dương hoặc xanh lục.
Minh họa về hue. Ảnh: Tác giả.
Hình này cho thấy các sắc độ khác nhau, di chuyển qua vòng tròn màu từ đỏ đến tím. Các hue khác nhau phù hợp để biểu diễn dữ liệu phân loại hoặc làm nổi bật các yếu tố cụ thể. Ví dụ, bạn có thể dùng các hue riêng biệt để phân biệt các danh mục không liên quan trong biểu đồ cột hoặc biểu đồ phân tán.
Saturation
Độ bão hòa đề cập đến mức độ mạnh hoặc thuần khiết của màu. Màu bão hòa hoàn toàn sẽ rực rỡ, còn màu kém bão hòa trông sẽ dịu hoặc ngả xám hơn.
Minh họa về độ bão hòa. Ảnh: Tác giả.
Dải màu này cho thấy các mức độ bão hòa khác nhau của cùng một hue. Màu bên phải bão hòa hoàn toàn. Khi dịch sang trái, màu dần bị khử bão hòa, cuối cùng gần như ngả xám. Màu có độ bão hòa cao có thể thu hút sự chú ý đến các điểm dữ liệu hoặc vùng quan trọng.
Value
Value, còn gọi là độ sáng, đề cập đến độ sáng tối của màu. Thêm trắng sẽ tăng value, trong khi thêm đen sẽ giảm nó.
Minh họa về value (độ sáng). Ảnh: Tác giả.
Dải màu này cho thấy các mức độ sáng khác nhau của cùng một hue. Ở bên phải, ta thấy màu sáng nhất. Khi chuyển sang trái, value giảm dần, màu tối hơn. Value hữu ích để thể hiện tiến trình hoặc thứ bậc trong dữ liệu. Chẳng hạn, bạn có thể dùng dải value trong heatmap để hiển thị cường độ dữ liệu trên một lưới hai chiều.
Các loại bảng màu trong Seaborn
Hãy cùng khám phá ba loại bảng màu chính trong Seaborn: định tính, tuần tự và phân kỳ.
Bảng màu định tính với color_palette()
Bảng màu định tính được thiết kế cho dữ liệu phân loại, nơi không có thứ tự hay mối quan hệ cố hữu giữa các danh mục. Những bảng màu này dùng các hue khác biệt để phân tách danh mục.
Bảng màu định tính. Ảnh: Tác giả.
Bảng "Bright" ở trên là một ví dụ về bảng màu định tính dựng sẵn trong Seaborn. Nó dùng các hue rực rỡ, khác biệt để tách các danh mục. Màu sắc dễ phân biệt với nhau, rất phù hợp cho dữ liệu phân loại nơi không có trật tự hay mối quan hệ nội tại giữa các danh mục.
Hàm color_palette() là cách Seaborn tạo bảng màu tùy chỉnh. Nó cho phép bạn chuyển giữa các loại bảng màu khác nhau bằng cách thay tên bảng và số lượng màu. Khi dùng các bảng có tên (như "pastel" hoặc "Blues"), tham số number quyết định số lượng màu hiển thị. Thông thường, bạn khớp số màu với số danh mục dữ liệu hoặc tạo một dải chuyển màu với số bước cụ thể.
Để kiểm soát chính xác hơn, bạn có thể dùng mã HEX để định nghĩa màu cụ thể. Điều này đặc biệt hữu ích khi bạn cần khớp màu thương hiệu hoặc tạo phối màu độc đáo không có sẵn trong các bảng dựng sẵn. Dưới đây là cách bạn có thể tạo các loại bảng khác nhau bằng color_palette():
# Create a qualitative palette with 4 colors
qual_palette = sns.color_palette("pastel",4)Được hỗ trợ bởi
Tạo một bảng màu định tính gồm bốn màu. Ảnh: Tác giả.
# Create a sequential palette with 6 colors
seq_palette = sns.color_palette("Blues",6)Được hỗ trợ bởi
Tạo một bảng màu tuần tự gồm sáu màu. Ảnh: Tác giả.
# Create a diverging palette with 12 colors
div_palette = sns.color_palette("RdBu",12)Được hỗ trợ bởi
Tạo một bảng màu phân kỳ gồm 12 màu. Ảnh: Tác giả.
# Create a custom palette using HEX codes hex= sns.color_palette(["#FF6B6B","#4ECDC4","#45B7D1","#FAD02E","#594F4F"])Được hỗ trợ bởi
Tạo một bảng màu tùy chỉnh bằng mã HEX. Ảnh: Tác giả.
Bảng màu tuần tự với cubehelix_palette()
Bảng màu tuần tự phù hợp cho dữ liệu số có thứ tự tự nhiên. Các bảng này thể hiện sự tiến triển từ giá trị thấp đến cao, thường sử dụng biến thiên về độ sáng và/hoặc độ bão hòa của một hoặc nhiều hue.
Minh họa bảng màu tuần tự Viridis. Ảnh: Tác giả.
Bảng "Viridis" cho thấy sự chuyển dịch từ tím đậm đến vàng sáng. Kiểu bảng này phù hợp để thể hiện dải giá trị từ thấp đến cao. Điều này đặc biệt hữu ích khi trực quan hóa dữ liệu liên tục như dải nhiệt độ, mật độ dân số hoặc bất kỳ tập dữ liệu nào mà bạn muốn thể hiện mối quan hệ thấp–cao rõ ràng. Các tùy chọn dựng sẵn khác gồm: ‘Blues’, ‘Greens’, ‘Reds’, ‘YlOrBr’ và ‘rocket’.
Hàm cubehelix_palette() cho phép tạo các bảng màu tuần tự với khả năng điều chỉnh tinh về độ sáng và tiến trình màu. Hàm này đặc biệt hữu ích khi bạn cần một bảng màu tăng độ sáng mượt mà và thay đổi nhẹ về hue. Dưới đây là các tham số để tùy biến:
n_colors: Số lượng màu trong bảng.
start: Vị trí bắt đầu trong vòng lặp màu (0–3).
rot: Xác định mức thay đổi hue.
dark: Màu tối nhất trong bảng.
light: Màu sáng nhất trong bảng.
reverse: Có đảo ngược hướng của bảng màu hay không.
# Create a default cubehelix palette
default_cube = sns.cubehelix_palette(8)Được hỗ trợ bởi
Minh họa bảng cubehelix mặc định. Ảnh: Tác giả.
# Create a custom cubehelix palette
custom_cube = sns.cubehelix_palette(8, start=.5, rot=-.75, dark=.3, light=.8)Được hỗ trợ bởi
Minh họa một bảng cubehelix tùy chỉnh. Ảnh: Tác giả.
# Create a reversed cubehelix palette
reversed_cube = sns.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True)Được hỗ trợ bởi
Minh họa một bảng cubehelix đảo ngược. Ảnh: Tác giả.
Bảng màu phân kỳ với diverging_palette()
Bảng màu phân kỳ được thiết kế cho dữ liệu có điểm giữa hoặc giá trị 0 mang ý nghĩa. Các bảng này làm nổi bật sự phân kỳ khỏi điểm trung tâm, sử dụng hai hue tương phản tăng dần độ bão hòa khi giá trị rời xa tâm.
Minh họa một bảng màu phân kỳ. Ảnh: Tác giả.
Ví dụ trên minh họa hiệu quả cách các bảng này làm nổi bật sự phân kỳ khỏi điểm trung tâm. Bảng chuyển từ xanh lạnh qua trắng trung tính đến đỏ ấm, với điểm giữa rõ ràng. Kiểu bảng này có thể dùng để trực quan hóa sai lệch nhiệt độ (nơi 0 đại diện cho nhiệt độ trung bình), hoặc kịch bản lãi/lỗ trong dữ liệu tài chính. Các tùy chọn dựng sẵn khác gồm: 'RdBu', 'RdYlGn' và 'PiYG'. Hãy xem các tham số:
h_neg và h_pos: Hue cho phần âm và dương của bảng.
n: Số lượng màu trong bảng.
s: Độ bão hòa của màu.
l: Độ sáng của màu.
center: Màu tại điểm trung tâm ('light' hoặc 'dark').
# Create a default diverging palette
default_div = sns.diverging_palette(220,20, n=7)Được hỗ trợ bởi
Minh họa một bảng màu phân kỳ mặc định. Ảnh: Tác giả.
# Create a diverging palette with more saturation
saturated_div = sns.diverging_palette(250,30, l=65, s=75, n=7)Được hỗ trợ bởi
Bảng màu phân kỳ có độ bão hòa cao hơn. Ảnh: Tác giả.
# Create a diverging palette with a darker center
dark_center_div = sns.diverging_palette(150,275, s=80, l=55, n=9, center="dark")Được hỗ trợ bởi
Bảng màu phân kỳ với tâm tối hơn. Ảnh: Tác giả.
Lời kết về bảng màu Seaborn
Chọn đúng bảng màu là một khía cạnh quan trọng để tạo nên trực quan hóa dữ liệu hiệu quả. Các tùy chọn bảng màu đa dạng và tùy biến của Seaborn cung cấp công cụ mạnh mẽ để tăng cường độ rõ ràng và sức ảnh hưởng của cách bạn biểu diễn dữ liệu.
Khi áp dụng các khái niệm màu sắc này vào dự án trực quan hóa dữ liệu và mong muốn nâng cao kỹ năng, hãy cân nhắc khám phá các lộ trình học toàn diện như Lập trình viên Python hoặc lộ trình nghề nghiệp Nhà phân tích dữ liệu với Python. Những lộ trình hướng nghiệp này được thiết kế để nâng trình độ của bạn từ nền tảng đến ứng dụng nâng cao, và việc hiểu về trực quan hóa tốt luôn quan trọng.
Vinod Chugani bắt đầu sự nghiệp tại Tokyo với vai trò Trưởng bàn giao dịch bán hàng Quỹ phòng hộ trẻ nhất của JPMorgan, sau đó lập kỷ lục doanh số cá nhân tại Lehman Brothers, rồi xây dựng một doanh nghiệp phân phối điện tử tại 30 quốc gia vượt mốc doanh thu 100 triệu đô la Singapore trước khi chuyển hướng sang dữ liệu. Tốt nghiệp Kinh tế Duke và là cựu học viên NYC Data Science Academy, anh là một trong ba người nhận học bổng trong hơn 100 ứng viên cho khóa học Building AI Applications của Hugo Bowne-Anderson trên Maven. Hiện nay, anh viết cho DataCamp, KDnuggets, Machine Learning Mastery và Statology về các chủ đề từ thống kê đến AI hành động, và cố vấn cho các chuyên gia dữ liệu tại NYC Data Science Academy với hơn 1.000 buổi kèm 1-1 đã thực hiện.
Câu hỏi thường gặp về bảng màu Seaborn
Những loại bảng màu nào có trong Seaborn?⌄
Seaborn cung cấp ba loại bảng màu chính: định tính, tuần tự và phân kỳ. Bảng định tính phù hợp cho dữ liệu phân loại, bảng tuần tự cho dữ liệu số có thứ tự tự nhiên, và bảng phân kỳ cho dữ liệu có điểm giữa mang ý nghĩa.
Làm thế nào để tạo một bảng màu tùy chỉnh trong Seaborn?
⌄
Bạn có thể dùng hàm color_palette() để tạo các bảng màu tùy chỉnh, bao gồm kiểu định tính, tuần tự và phân kỳ. Hàm này cho phép chọn màu cụ thể bằng mã HEX để kiểm soát chính xác.
Khi nào nên dùng cubehelix_palette() trong Seaborn?⌄
Hàm cubehelix_palette() hữu ích để tạo các bảng màu tuần tự với chuyển màu mượt mà, đặc biệt khi bạn cần điều chỉnh tinh về độ sáng và biến thiên màu.
Mục đích của việc dùng diverging_palette() trong trực quan hóa dữ liệu là gì?⌄
Hàm diverging_palette() được thiết kế cho dữ liệu có điểm giữa mang ý nghĩa, như lãi/lỗ hoặc sai lệch nhiệt độ. Nó dùng các hue tương phản để thể hiện sự phân kỳ khỏi tâm, giúp nhấn mạnh các độ lệch.
Hue, saturation và value là gì trong việc chọn màu?⌄
Hue đại diện cho màu thuần, như đỏ hoặc xanh dương; saturation chỉ mức độ bão hòa của màu, từ rực rỡ đến dịu; còn value, hay độ sáng, xác định độ sáng tối của màu. Hiểu các yếu tố này giúp bạn chọn màu hiệu quả để trực quan hóa các loại dữ liệu khác nhau.
Trong trực quan hóa dữ liệu, chọn màu phù hợp cũng quan trọng như chọn đúng loại biểu đồ hay cách biểu diễn dữ liệu. May mắn là Python giúp bạn tìm bảng màu phù hợp với Seaborn một cách dễ dàng. Hãy đọc tiếp để hiểu cách tạo hình ảnh vừa giàu thông tin vừa bắt mắt và dễ tiếp cận.
Nếu bạn mới học Python, hãy cân nhắc bắt đầu với khóa học Giới thiệu về Python hoặc lộ trình kỹ năng Lập trình Python. Những tài nguyên này sẽ cung cấp cho bạn các kỹ năng cần thiết để theo dõi ví dụ và khai thác đầy đủ khả năng của Seaborn.
Ghi chú nhanh về các yếu tố cơ bản của màu sắc
Có ba thành phần chính xác định mọi màu sắc: sắc độ (hue), độ bão hòa (saturation) và độ sáng (value). Mỗi thành phần đều quan trọng vì chúng truyền tải các loại thông tin khác nhau.
Hue
Hue là thứ ta thường nghĩ đến khi nói "màu" — đó là màu thuần như đỏ, xanh dương hoặc xanh lục.
Minh họa về hue. Ảnh: Tác giả.
Hình này cho thấy các sắc độ khác nhau, di chuyển qua vòng tròn màu từ đỏ đến tím. Các hue khác nhau phù hợp để biểu diễn dữ liệu phân loại hoặc làm nổi bật các yếu tố cụ thể. Ví dụ, bạn có thể dùng các hue riêng biệt để phân biệt các danh mục không liên quan trong biểu đồ cột hoặc biểu đồ phân tán.
Saturation
Độ bão hòa đề cập đến mức độ mạnh hoặc thuần khiết của màu. Màu bão hòa hoàn toàn sẽ rực rỡ, còn màu kém bão hòa trông sẽ dịu hoặc ngả xám hơn.
Minh họa về độ bão hòa. Ảnh: Tác giả.
Dải màu này cho thấy các mức độ bão hòa khác nhau của cùng một hue. Màu bên phải bão hòa hoàn toàn. Khi dịch sang trái, màu dần bị khử bão hòa, cuối cùng gần như ngả xám. Màu có độ bão hòa cao có thể thu hút sự chú ý đến các điểm dữ liệu hoặc vùng quan trọng.
Value
Value, còn gọi là độ sáng, đề cập đến độ sáng tối của màu. Thêm trắng sẽ tăng value, trong khi thêm đen sẽ giảm nó.
Minh họa về value (độ sáng). Ảnh: Tác giả.
Dải màu này cho thấy các mức độ sáng khác nhau của cùng một hue. Ở bên phải, ta thấy màu sáng nhất. Khi chuyển sang trái, value giảm dần, màu tối hơn. Value hữu ích để thể hiện tiến trình hoặc thứ bậc trong dữ liệu. Chẳng hạn, bạn có thể dùng dải value trong heatmap để hiển thị cường độ dữ liệu trên một lưới hai chiều.
Các loại bảng màu trong Seaborn
Hãy cùng khám phá ba loại bảng màu chính trong Seaborn: định tính, tuần tự và phân kỳ.
Bảng màu định tính với color_palette()
Bảng màu định tính được thiết kế cho dữ liệu phân loại, nơi không có thứ tự hay mối quan hệ cố hữu giữa các danh mục. Những bảng màu này dùng các hue khác biệt để phân tách danh mục.
Bảng màu định tính. Ảnh: Tác giả.
Bảng
"Bright"ở trên là một ví dụ về bảng màu định tính dựng sẵn trong Seaborn. Nó dùng các hue rực rỡ, khác biệt để tách các danh mục. Màu sắc dễ phân biệt với nhau, rất phù hợp cho dữ liệu phân loại nơi không có trật tự hay mối quan hệ nội tại giữa các danh mục.Hàm
color_palette()là cách Seaborn tạo bảng màu tùy chỉnh. Nó cho phép bạn chuyển giữa các loại bảng màu khác nhau bằng cách thay tên bảng và số lượng màu. Khi dùng các bảng có tên (như"pastel"hoặc"Blues"), tham sốnumberquyết định số lượng màu hiển thị. Thông thường, bạn khớp số màu với số danh mục dữ liệu hoặc tạo một dải chuyển màu với số bước cụ thể.Để kiểm soát chính xác hơn, bạn có thể dùng mã HEX để định nghĩa màu cụ thể. Điều này đặc biệt hữu ích khi bạn cần khớp màu thương hiệu hoặc tạo phối màu độc đáo không có sẵn trong các bảng dựng sẵn. Dưới đây là cách bạn có thể tạo các loại bảng khác nhau bằng
color_palette():Tạo một bảng màu định tính gồm bốn màu. Ảnh: Tác giả.
Tạo một bảng màu tuần tự gồm sáu màu. Ảnh: Tác giả.
Tạo một bảng màu phân kỳ gồm 12 màu. Ảnh: Tác giả.
Tạo một bảng màu tùy chỉnh bằng mã HEX. Ảnh: Tác giả.
Bảng màu tuần tự với cubehelix_palette()
Bảng màu tuần tự phù hợp cho dữ liệu số có thứ tự tự nhiên. Các bảng này thể hiện sự tiến triển từ giá trị thấp đến cao, thường sử dụng biến thiên về độ sáng và/hoặc độ bão hòa của một hoặc nhiều hue.
Minh họa bảng màu tuần tự Viridis. Ảnh: Tác giả.
Bảng
"Viridis"cho thấy sự chuyển dịch từ tím đậm đến vàng sáng. Kiểu bảng này phù hợp để thể hiện dải giá trị từ thấp đến cao. Điều này đặc biệt hữu ích khi trực quan hóa dữ liệu liên tục như dải nhiệt độ, mật độ dân số hoặc bất kỳ tập dữ liệu nào mà bạn muốn thể hiện mối quan hệ thấp–cao rõ ràng. Các tùy chọn dựng sẵn khác gồm:‘Blues’,‘Greens’,‘Reds’,‘YlOrBr’và‘rocket’.Hàm
cubehelix_palette()cho phép tạo các bảng màu tuần tự với khả năng điều chỉnh tinh về độ sáng và tiến trình màu. Hàm này đặc biệt hữu ích khi bạn cần một bảng màu tăng độ sáng mượt mà và thay đổi nhẹ về hue. Dưới đây là các tham số để tùy biến:n_colors: Số lượng màu trong bảng.start: Vị trí bắt đầu trong vòng lặp màu (0–3).rot: Xác định mức thay đổi hue.dark: Màu tối nhất trong bảng.light: Màu sáng nhất trong bảng.reverse: Có đảo ngược hướng của bảng màu hay không.Minh họa bảng cubehelix mặc định. Ảnh: Tác giả.
Minh họa một bảng cubehelix tùy chỉnh. Ảnh: Tác giả.
Minh họa một bảng cubehelix đảo ngược. Ảnh: Tác giả.
Bảng màu phân kỳ với diverging_palette()
Bảng màu phân kỳ được thiết kế cho dữ liệu có điểm giữa hoặc giá trị 0 mang ý nghĩa. Các bảng này làm nổi bật sự phân kỳ khỏi điểm trung tâm, sử dụng hai hue tương phản tăng dần độ bão hòa khi giá trị rời xa tâm.
Minh họa một bảng màu phân kỳ. Ảnh: Tác giả.
Ví dụ trên minh họa hiệu quả cách các bảng này làm nổi bật sự phân kỳ khỏi điểm trung tâm. Bảng chuyển từ xanh lạnh qua trắng trung tính đến đỏ ấm, với điểm giữa rõ ràng. Kiểu bảng này có thể dùng để trực quan hóa sai lệch nhiệt độ (nơi 0 đại diện cho nhiệt độ trung bình), hoặc kịch bản lãi/lỗ trong dữ liệu tài chính. Các tùy chọn dựng sẵn khác gồm:
'RdBu','RdYlGn'và'PiYG'. Hãy xem các tham số:h_negvàh_pos: Hue cho phần âm và dương của bảng.n: Số lượng màu trong bảng.s: Độ bão hòa của màu.l: Độ sáng của màu.center: Màu tại điểm trung tâm ('light'hoặc'dark').Minh họa một bảng màu phân kỳ mặc định. Ảnh: Tác giả.
Bảng màu phân kỳ có độ bão hòa cao hơn. Ảnh: Tác giả.
Bảng màu phân kỳ với tâm tối hơn. Ảnh: Tác giả.
Lời kết về bảng màu Seaborn
Chọn đúng bảng màu là một khía cạnh quan trọng để tạo nên trực quan hóa dữ liệu hiệu quả. Các tùy chọn bảng màu đa dạng và tùy biến của Seaborn cung cấp công cụ mạnh mẽ để tăng cường độ rõ ràng và sức ảnh hưởng của cách bạn biểu diễn dữ liệu.
Khi áp dụng các khái niệm màu sắc này vào dự án trực quan hóa dữ liệu và mong muốn nâng cao kỹ năng, hãy cân nhắc khám phá các lộ trình học toàn diện như Lập trình viên Python hoặc lộ trình nghề nghiệp Nhà phân tích dữ liệu với Python. Những lộ trình hướng nghiệp này được thiết kế để nâng trình độ của bạn từ nền tảng đến ứng dụng nâng cao, và việc hiểu về trực quan hóa tốt luôn quan trọng.