Để rasterize biểu đồ tốt hơn mà không làm mờ nhãn (label) trong Matplotlib, bạn có thể thực hiện theo các bước sau:
Các bước thực hiện
- Thiết lập kích thước hình vẽ và điều chỉnh khoảng cách giữa các subplot.
- Tạo figure và tập hợp subplot (4 hàng).
- Trục 0: Tô vùng giữa đường cong với alpha và rasterized=False.
- Thêm text vào axes.
- Trục 1: Tô vùng với alpha và rasterized=True.
- Thêm text vào axes.
- Trục 2 và 3: Tô vùng không có alpha với rasterized=True và False.
- Thêm text vào axes.
- Sử dụng phương thức show() để hiển thị hình vẽ.
Ví dụ minh họa
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, axes = plt.subplots(nrows=4, sharex=True)
# Alpha + rasterized=False
axes[0].fill_between(np.arange(1, 10), 1, 2, zorder=-1, alpha=0.2, rasterized=False)
axes[0].text(5, 1.5, "Label 1", ha='center', va='center', fontsize=25, zorder=-2, rasterized=True)
# Alpha + rasterized=True
axes[1].fill_between(np.arange(1, 10), 1, 2, zorder=-1, alpha=0.2, rasterized=True)
axes[1].text(5, 1.5, "Label 2", ha='center', va='center', fontsize=25, zorder=-2, rasterized=True)
# Không alpha + rasterized=True
axes[2].fill_between(np.arange(1, 10), 1, 2, zorder=-1, rasterized=True)
axes[2].text(5, 1.5, "Label 3", ha='center', va='center', fontsize=25, zorder=-2, rasterized=True)
# Không alpha + rasterized=False
axes[3].fill_between(np.arange(1, 10), 1, 2, zorder=-1, rasterized=False)
axes[3].text(5, 1.5, "Label 4", ha='center', va='center', fontsize=25, zorder=-2, rasterized=True)
plt.show()
Quan sát
Khi không dùng alpha (trục 2, 3), nhãn text vẫn hiển thị rõ nét. Khi dùng alpha=0.2 và rasterized=True (trục 1), nhãn có thể bị mờ. Cách tốt nhất: tô vùng rasterized=True, text rasterized=False (hoặc zorder cao hơn).