Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hiển thị hai colormap khác nhau trên cùng một imshow Matplotlib

Để vẽ hai colormap riêng biệt cho giá trị dương và âm trên cùng một ảnh, ta dùng masked array để tách dữ liệu.

Các bước

  • Thiết lập figure size và autolayout.
  • Tạo ma trận 5x5 giá trị ngẫu nhiên âm/dương.
  • Tạo masked array data1 (che giá trị >=0) và data2 (che giá trị <0).
  • Tạo figure, axes và vẽ 2 lần imshow() với cmap khác nhau.
  • Tạo 2 colorbar riêng biệt cho mỗi image.
  • Đặt label cho từng colorbar.
  • Hiển thị bằng show().

Ví dụ

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

img = np.random.randint(-10, 10, (5, 5))
data1 = np.ma.masked_array(img, img >= 0)
data2 = np.ma.masked_array(img, img < 0)
fig, ax = plt.subplots()
img1 = ax.imshow(data1, cmap="prism_r")
img2 = ax.imshow(data2, cmap="copper")
bar1 = plt.colorbar(img1)
bar2 = plt.colorbar(img2)
bar1.set_label('ColorBar 1')
bar2.set_label('ColorBar 2')
plt.show()

Kết quả

Hiển thị hai colormap khác nhau trên cùng một imshow Matplotlib