Để 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=4hoặc tự động bằngaspect='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.