2009-08-13 39 views
27

Có cách nào để tự động thay đổi kích thước một hình để phù hợp với các ô được chứa trong một hình ảnh matplotlib/pylab không?Thay đổi kích thước hình tự động trong matplotlib

Tôi đang tạo các sơ đồ nhiệt (phụ) khác nhau về tỷ lệ khung hình theo dữ liệu được sử dụng.

Tôi nhận ra rằng tôi có thể tính tỷ lệ khung hình và đặt thủ công, nhưng chắc chắn có cách dễ dàng hơn?

Trả lời

34

Sử dụng bbox_inches = 'chặt'

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

X = 10*np.random.rand(5,3) 

fig = plt.figure(figsize=(15,5),facecolor='w') 
ax = fig.add_subplot(111) 
ax.imshow(X, cmap=cm.jet) 

plt.savefig("image.png",bbox_inches='tight',dpi=100) 

... chỉ có tác dụng khi lưu hình ảnh tuy nhiên, không hiển thị chúng.

+1

Con số đó là gì.add_subplot (111) cho biết? Ý tôi là số trong dấu ngoặc vuông ((111)) – dangerous

3

Bạn có nghĩa là thay đổi kích thước của hình ảnh hoặc khu vực có thể hiển thị trong ô không?

Kích thước của hình có thể được đặt bằng Figure.set_figsize_inches. Ngoài ra, SciPy Cookbook có mục nhập thay đổi kích thước hình ảnh chứa một phần về nhiều hình ảnh trên mỗi hình.

Ngoài ra hãy xem điều này question.

+0

Tôi có nghĩa là kích thước của đối tượng Hình. tức là Cắt hình để vừa với ô chứa. Một có lẽ sẽ phải cung cấp một chiều rộng hoặc chiều cao đầu tiên, và có tính khác. – pufferfish

+0

Tôi nghĩ lệnh đúng là '' .set_size_inches'' không có '' fig'' – innisfree

12

chỉ cần sử dụng khía cạnh = 'auto' khi bạn gọi imshow

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.cm as cm 

X = 10*np.random.rand(5,3) 
plt.imshow(X, aspect='auto') 

nó hoạt động ngay cả khi nó chỉ là để hiển thị và không tiết kiệm

2

Một cách khác để làm điều này là sử dụng matplotlib tight_layout chức năng

import matplotlib.pyplot as plt 
fig,(ax) = plt.subplots(figsize=(8,4), ncols=1) 
data = [0,1,2,3,4] 
ax.plot(data) 
fig.tight_layout() 
fig.show() 
Các vấn đề liên quan