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

การแมปค่าเป็นสี (Map Values to Colors) ใน Matplotlib

ใช้ Normalize และ ScalarMappable เพื่อแมปค่าตัวเลขเป็นสี RGBA จาก colormap ที่กำหนด เหมาะสำหรับการสร้าง colorbar หรือกำหนดสีให้จุดข้อมูลตามค่า

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

  1. สร้างช่วงค่าด้วย np.linspace
  2. กำหนด normalization ด้วย colors.Normalize(vmin, vmax)
  3. สร้าง mapper ด้วย cm.ScalarMappable(norm, cmap)
  4. วนลูปแมปค่าแต่ละค่าเป็น RGBA ด้วย mapper.to_rgba(value)

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

import numpy as np
from matplotlib import cm, colors

values = np.linspace(1.0, 2.0, 10)
norm = colors.Normalize(vmin=1.0, vmax=2.0, clip=True)
mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)

for value in values:
    rgba = mapper.to_rgba(value)
    print(f"{value:.2f} = red:{rgba[0]:.2f} green:{rgba[1]:.2f} blue:{rgba[2]:.2f}")

ผลลัพธ์

1.00 = red:0.00 green:0.00 blue:0.00
1.11 = red:0.13 green:0.13 blue:0.13
1.22 = red:0.28 green:0.28 blue:0.28
1.33 = red:0.41 green:0.41 blue:0.41
1.44 = red:0.53 green:0.53 blue:0.53
1.56 = red:0.66 green:0.66 blue:0.66
1.67 = red:0.78 green:0.78 blue:0.78
1.78 = red:0.87 green:0.87 blue:0.87
1.89 = red:0.95 green:0.95 blue:0.95
2.00 = red:1.00 green:1.00 blue:1.00