Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Rasterize biểu đồ tốt hơn mà không làm mờ nhãn trong Matplotlib

Để 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).