ใช้ np.tri() สร้าง mask แบบสามเหลี่ยม (1 ที่และต่ำกว่า diagonal, 0 ที่อื่น) นำไปใช้กับ np.ma.array() แล้วพลอตด้วย plt.imshow() ได้ heatmap แสดงครึ่งเดียว
ขั้นตอนการทำงาน
- ตั้งค่าขนาดรูปและเลย์เอาต์
- สร้างข้อมูลสุ่ม 5x5
- สร้าง mask ด้วย
np.tri(data.shape[0], k=-1)(lower triangle) - สร้าง masked array:
np.ma.array(data, mask=mask) - พลอตด้วย
plt.imshow()ตั้ง interpolation และ cmap - แสดงผล
ตัวอย่างโค้ด
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
data = np.random.rand(5, 5)
mask = np.tri(data.shape[0], k=-1) # lower triangle
data = np.ma.array(data, mask=mask)
plt.imshow(data, interpolation="nearest", cmap='copper')
plt.show()
ผลลัพธ์

หมายเหตุ
ใช้ k=0 รวม diagonal, k=-1 ไม่รวม diagonal สำหรับ upper triangle ใช้ np.triu() แทน