2012-03-09 42 views
20

Tôi đang sử dụng python để mô phỏng một số mô hình tự động hóa và với sự trợ giúp của matplotlib Tôi đang tạo các ô giống như được hiển thị bên dưới.Vẽ một bản đồ nhị phân đen trắng trong matplotlib

enter image description here

tôi đang âm mưu với lệnh sau đây:

ax.imshow(self.g, cmap=map, interpolation='nearest') 

nơi self.g là bản đồ nhị phân (0 -> màu xanh, 1 -> màu đỏ ở những mảnh đất hiện tại của tôi).

Tuy nhiên, để bao gồm điều này trong báo cáo của tôi, tôi muốn âm mưu có chấm đen trên nền trắng thay vì màu đỏ trên màu xanh lam. Làm thế nào để tôi thực hiện điều đó?

Trả lời

33

Bạn có thể thay đổi bản đồ màu bạn đang sử dụng thông qua từ khóa cmap. Bản đồ màu 'Greys' cung cấp hiệu ứng bạn muốn. Bạn có thể tìm thấy danh sách available maps on the scipy website.

import matplotlib.pyplot as plt 
import numpy as np 

np.random.seed(101) 
g = np.floor(np.random.random((100, 100)) + .5) 

plt.subplot(211) 
plt.imshow(g) 
plt.subplot(212) 
plt.imshow(g, cmap='Greys', interpolation='nearest') 
plt.savefig('blkwht.png') 

plt.show() 

mà kết quả trong:

enter image description here

+1

Bạn chỉ có thể cung cấp tên của colormap cho 'cmap'. 'plt.imshow (g, cmap =" Grays ")' sẽ làm điều tương tự. – Avaris

+0

@Avaris, cảm ơn, tôi đã cập nhật câu trả lời để bao gồm ... – Yann

+0

bạn cũng có thể sử dụng plt.gray() ngay từ đầu để có kết quả tương tự. – touchStone

8

Có một phương pháp khác để trả lời Yann của cung cấp cho bạn kiểm soát tốt hơn. Matplotlib's imshow có thể lấy ma trận MxNx3 trong đó mỗi mục nhập là giá trị màu RGB - chỉ cần đặt chúng thành màu trắng [1,1,1] hoặc màu đen [0,0,0] tương ứng. Nếu bạn muốn có ba màu, thật dễ dàng để mở rộng phương thức này.

import matplotlib.pyplot as plt 
import numpy as np 

# Z is your data set 
N = 100 
Z = np.random.random((N,N)) 

# G is a NxNx3 matrix 
G = np.zeros((N,N,3)) 

# Where we set the RGB for each pixel 
G[Z>0.5] = [1,1,1] 
G[Z<0.5] = [0,0,0] 

plt.imshow(G,interpolation='nearest') 
plt.show() 

enter image description here

Các vấn đề liên quan