Khi làm việc với Matplotlib, việc tạo ra các subplot để hiển thị nhiều biểu đồ cạnh nhau là rất phổ biến. Tuy nhiên, các subplot này đôi khi có thể bị chồng lấn lên nhau, gây khó khăn cho việc đọc và phân tích dữ liệu.
Tạo Subplot với Matplotlib
Hãy cùng tạo một subplot đơn giản:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 3)
plt.show()
Kết quả:
Hình ảnh: Lưới 9 subplot được tạo bằng Matplotlib, thể hiện sự chồng lấn nhẹ giữa các biểu đồ con, ảnh hưởng đến khả năng đọc và thẩm mỹ.
Bạn có thể dễ dàng nhận thấy rằng các subplot này bị chồng lên nhau một chút.
May mắn thay, hàm tight_layout()
của Matplotlib cung cấp một giải pháp đơn giản để tự động điều chỉnh các tham số subplot, đảm bảo rằng các biểu đồ được căn chỉnh gọn gàng và không bị chồng lấn.
Matplotlib.pyplot.tight_layout() Là Gì?
Hàm tight_layout()
trong Matplotlib điều chỉnh các tham số subplot sao cho các subplot vừa khít trong vùng hình, đảm bảo rằng các nhãn trục, tiêu đề và các thành phần biểu đồ khác không bị chồng lên nhau. Hàm này giúp tạo ra các biểu đồ trực quan, có tổ chức, đặc biệt khi nhiều biểu đồ được hiển thị cạnh nhau. Đây là một công cụ hữu ích để cải thiện bố cục và tính dễ đọc của các hình ảnh trực quan hóa dữ liệu.
Cú pháp:
matplotlib.pyplot.tight_layout()
Trước tiên, hãy tạo một lưới subplot đơn giản và áp dụng tight_layout()
để đảm bảo không có sự chồng lấn giữa các subplot.
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 3)
Plt.tight_layout()
plt.show()
Kết quả:
Hình ảnh: Sau khi sử dụng hàm plt.tight_layout()
, lưới 9 subplot được căn chỉnh một cách trực quan, loại bỏ hoàn toàn hiện tượng chồng lấn và cải thiện đáng kể khả năng đọc của biểu đồ.
Tạo Hình Hai Phần Sử Dụng Hàm tight_layout() của Matplotlib
Bạn cũng có thể sử dụng tight_layout()
khi tạo nhiều biểu đồ trong một hình duy nhất. Dưới đây là một ví dụ về cách chúng ta tạo hai biểu đồ cạnh nhau bằng cách sử dụng tight_layout()
để đảm bảo bố cục rõ ràng.
import numpy as np
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 2)
x = np.arange(0.0, 2.0, 0.02)
y1 = np.sin(2 * np.pi * x)
y2 = np.exp(-x)
l1, = axs[0].plot(x, y1)
l2, = axs[0].plot(x, y2, marker='o')
y3 = np.sin(4 * np.pi * x)
y4 = np.exp(-2 * x)
l3, = axs[1].plot(x, y3, color='tab:green')
l4, = axs[1].plot(x, y4, color='tab:red', marker='o')
axs[0].legend([l1, l2], ['Line 1', 'Line 2'], loc='upper left')
axs[1].legend([l3, l4], ['Line 3', 'Line 4'], loc='upper right')
fig.suptitle('Ví dụ về matplotlib.pyplot.tight_layout()')
plt.tight_layout()
plt.show()
Kết quả:
Hình ảnh: Biểu đồ hai phần được tạo bằng Matplotlib và hàm plt.tight_layout()
, với các chú thích, tiêu đề và nhãn trục được sắp xếp hợp lý, tạo nên một bố cục trực quan và dễ hiểu.
Đồ thị đầu ra thể hiện hình ảnh hai phần gọn gàng với các chú thích, tiêu đề và nhãn trục được sắp xếp đúng cách.
Biểu Đồ Histogram Cạnh Nhau Với tight_layout()
Một ứng dụng thực tế khác của tight_layout()
là khi trực quan hóa nhiều biểu đồ histogram. Dưới đây là một ví dụ về cách chúng ta vẽ hai biểu đồ histogram của dữ liệu ngẫu nhiên với kích thước bin có thể điều chỉnh và sử dụng tight_layout()
để đảm bảo không có sự chồng lấn.
import numpy as np
import matplotlib.pyplot as plt
data1 = np.random.randn(1000)
data2 = np.random.randn(1000)
fig, axs = plt.subplots(1, 2, figsize=(10, 5))
axs[0].hist(data1, bins=30, color='blue', edgecolor='black')
axs[0].set_title('Histogram 1')
axs[0].set_xlabel('Giá trị')
axs[0].set_ylabel('Tần số')
axs[1].hist(data2, bins=30, color='green', edgecolor='black')
axs[1].set_title('Histogram 2')
axs[1].set_xlabel('Giá trị')
axs[1].set_ylabel('Tần số')
plt.tight_layout()
plt.show()
Kết quả:
Hình ảnh: Hai biểu đồ histogram được hiển thị cạnh nhau với nhãn, tiêu đề và trục được sắp xếp một cách khoa học nhờ plt.tight_layout()
, mang lại cái nhìn trực quan và rõ ràng về phân phối dữ liệu.
Đầu ra thể hiện hai biểu đồ histogram được căn chỉnh gọn gàng với nhãn, tiêu đề và trục được sắp xếp đúng cách.
Kết Luận
Hàm tight_layout()
của Matplotlib đặc biệt hữu ích khi:
- Bạn có nhiều subplot có thể bị chồng lấn.
- Bạn muốn đảm bảo rằng tiêu đề, nhãn và chú thích không bị xung đột.
- Bạn đang làm việc với các hình phức tạp chứa nhiều yếu tố trực quan.
Bằng cách sử dụng tight_layout()
, bạn có thể đảm bảo rằng các biểu đồ của mình rõ ràng và dễ hiểu, nâng cao khả năng trình bày dữ liệu tổng thể.