Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การพลอตเฉพาะสามเหลี่ยมบน/ล่างของ Heatmap ใน Matplotlib

ใช้ np.tri() สร้าง mask แบบสามเหลี่ยม (1 ที่และต่ำกว่า diagonal, 0 ที่อื่น) นำไปใช้กับ np.ma.array() แล้วพลอตด้วย plt.imshow() ได้ heatmap แสดงครึ่งเดียว

ขั้นตอนการทำงาน

  1. ตั้งค่าขนาดรูปและเลย์เอาต์
  2. สร้างข้อมูลสุ่ม 5x5
  3. สร้าง mask ด้วย np.tri(data.shape[0], k=-1) (lower triangle)
  4. สร้าง masked array: np.ma.array(data, mask=mask)
  5. พลอตด้วย plt.imshow() ตั้ง interpolation และ cmap
  6. แสดงผล

ตัวอย่างโค้ด

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()

ผลลัพธ์

การพลอตเฉพาะสามเหลี่ยมบน/ล่างของ Heatmap ใน Matplotlib

หมายเหตุ

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