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

Thay đổi tỷ lệ imshow trong Matplotlib mà không làm méo ảnh

Để thay đổi tỷ lệ (scale) của imshow trong Matplotlib mà không làm méo (stretch) ảnh, 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 dữ liệu ngẫu nhiên kích thước 4×4.
  • Hiển thị dữ liệu dưới dạng ảnh bằng imshow().
  • Sử dụng tham số extent của imshow để ánh xạ tọa độ pixel bộ nhớ đệm sang hệ tọa độ dữ liệu.
  • Đặt tỷ lệ khung hình (aspect ratio) thủ công bằng aspect=4 hoặc tự động bằng aspect='auto'. Điều này ngăn chặn việc kéo giãn ảnh. Mặc định imshow đặt aspect=1.
  • Sử dụng phương thức show() để hiển thị hình vẽ.

Ví dụ minh họa

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.random.rand(4, 4)

# extent=[xmin, xmax, ymin, ymax], aspect=4 để giữ tỷ lệ
plt.imshow(data, origin='lower', extent=[-4, 4, -1, 1], aspect=4)

plt.show()

Kết quả đầu ra

Ảnh 4x4 được hiển thị trên hệ tọa độ [-4,4]×[-1,1] với tỷ lệ khung hình aspect=4, không bị méo.