hình của imshow () quá nhỏ


96

Tôi đang cố gắng hình dung một mảng numpy bằng cách sử dụng imshow () vì nó tương tự như imagesc () trong Matlab.

imshow(random.rand(8, 90), interpolation='nearest')

Hình thu được rất nhỏ ở tâm của cửa sổ màu xám, trong khi hầu hết không gian đều không có người sử dụng. Làm cách nào để đặt các thông số để làm cho hình lớn hơn? Tôi đã thử figsize = (xx, xx) và nó không phải là thứ tôi muốn. Cảm ơn!


1
Chỉ cần thêm nhận xét này trong trường hợp những người khác như tôi phải vật lộn để truy cập vào bài đăng này --- vấn đề xảy ra (rõ ràng nhất) khi dữ liệu x và y có độ lớn khác nhau; Câu trả lời của @ bmu đã sửa nó
mwarrior

Câu trả lời:


142

Nếu bạn không đưa ra aspectđối số imshow, nó sẽ sử dụng giá trị for image.aspecttrong của bạn matplotlibrc. Giá trị mặc định cho giá trị này mới matplotlibrcequal. Vì vậy, imshowsẽ vẽ mảng của bạn với tỷ lệ khung hình bằng nhau.

Nếu bạn không cần một khía cạnh bằng nhau, bạn có thể đặt aspectthànhauto

imshow(random.rand(8, 90), interpolation='nearest', aspect='auto')

cho ra hình sau

imshow-auto

Nếu bạn muốn có một tỷ lệ khung hình bằng nhau, bạn phải điều chỉnh figsizetheo khía cạnh

fig, ax = subplots(figsize=(18, 2))
ax.imshow(random.rand(8, 90), interpolation='nearest')
tight_layout()

cung cấp cho bạn:

imshow-bằng


ngoài việc xác định tỷ lệ co, có thể lấy (xác định) kích thước của các ô màu không?
Alexander Cska

36

Thật kỳ lạ, nó chắc chắn hiệu quả với tôi:

from matplotlib import pyplot as plt

plt.figure(figsize = (20,2))
plt.imshow(random.rand(8, 90), interpolation='nearest')

Tôi đang sử dụng chương trình phụ trợ "MacOSX", btw.


4
phải rõ ràng, nó phải là plt.figure(figsize = (x_new, y_new))và cho imgshow () bây giờ bạn phải nhập ioIMAGE vì imageshow scipy () sẽ được phê duyệt sớm
Agile Bean

1
@AgileBean sẽ rất hữu ích nếu bạn chỉnh sửa bài đăng này với thông tin đó hoặc thêm nó làm câu trả lời cho câu hỏi này
baxx

2

Tôi cũng mới làm quen với python. Đây là một cái gì đó có vẻ như sẽ làm những gì bạn muốn

axes([0.08, 0.08, 0.94-0.08, 0.94-0.08]) #[left, bottom, width, height]
axis('scaled')`

Tôi tin rằng điều này quyết định kích thước của canvas.


1

Cập nhật năm 2020

theo yêu cầu của @baxxx, đây là bản cập nhật vì random.randtrong thời gian đó không được dùng nữa.

Điều này hoạt động với matplotlip 3.2.1:

from matplotlib import pyplot as plt
import random
import numpy as np

random = np.random.random ([8,90])

plt.figure(figsize = (20,2))
plt.imshow(random, interpolation='nearest')

Âm mưu này:

nhập mô tả hình ảnh ở đây

Để thay đổi số ngẫu nhiên, bạn có thể thử nghiệm với np.random.normal(0,1,(8,90))(ở đây nghĩa là = 0, độ lệch chuẩn = 1).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.