Tôi có đoạn mã sau:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
Vì vậy, điều này tạo ra một biểu đồ của các giá trị 'v' trên các trục X so với Y, sử dụng bản đồ màu được chỉ định. Các trục X và Y là hoàn hảo, nhưng colormap trải đều giữa cực tiểu và cực đại của v. Tôi muốn buộc colormap nằm trong khoảng từ 0 đến 1.
Tôi nghĩ về việc sử dụng:
plt.axis(...)
Để đặt phạm vi của các trục, nhưng điều này chỉ cần các đối số cho min và max của X và Y, chứ không phải colormap.
Biên tập:
Để rõ ràng, giả sử tôi có một biểu đồ có phạm vi giá trị (0 ... 0,3) và một biểu đồ khác có giá trị (0,2 ... 0,8).
Trong cả hai biểu đồ, tôi sẽ muốn phạm vi của thanh màu là (0 ... 1). Trong cả hai biểu đồ, tôi muốn dải màu này giống hệt nhau bằng cách sử dụng toàn bộ phạm vi cdict ở trên (vì vậy 0,25 trong cả hai biểu đồ sẽ có cùng màu). Trong biểu đồ đầu tiên, tất cả các màu trong khoảng từ 0,3 đến 1 sẽ không có trong biểu đồ, nhưng sẽ có trong phím thanh màu ở bên cạnh. Mặt khác, tất cả các màu trong khoảng từ 0 đến 0,2 và từ 0,8 đến 1 sẽ không có trong biểu đồ, nhưng sẽ có trong thanh màu ở bên cạnh.