Matplotlib: วิธีระบายสี scatterplot ตามค่า


บ่อยครั้งที่คุณอาจต้องการแรเงาสีของจุดใน Scatterplot ของ matplotlib ตามตัวแปรที่สาม โชคดีที่ทำได้ง่ายโดยใช้ฟังก์ชัน matplotlib.pyplot.scatter() ซึ่งใช้ไวยากรณ์ต่อไปนี้:

matplotlib.pyplot.scatter(x, y, s=ไม่มี, c=ไม่มี, cmap=ไม่มี)

ทอง:

  • x: ตารางค่าที่จะใช้สำหรับตำแหน่งของแกน x ในพล็อต
  • y: อาร์เรย์ของค่าที่จะใช้สำหรับตำแหน่งแกน y ในพล็อต
  • s: ขนาดของเครื่องหมาย
  • c: ตารางค่าที่ใช้สำหรับสีมาร์กเกอร์
  • cmap: แผนผังสีเพื่อใช้ในการวางแผน

คุณสามารถใช้ c เพื่อระบุตัวแปรที่จะใช้สำหรับค่าสี และคุณสามารถใช้ cmap เพื่อระบุสีจริงที่จะใช้สำหรับมาร์กเกอร์ในพอยต์คลาวด์

บทช่วยสอนนี้จะอธิบายตัวอย่างการใช้งานฟังก์ชันนี้ในทางปฏิบัติหลายตัวอย่าง

ตัวอย่างที่ 1: จุดกระจายสีตามค่า

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
                   'y': [5, 7, 7, 9, 12, 9, 9, 4],
                   'z': [3, 4, 4, 5, 7, 8, 8, 9]})

#view DataFrame
df

        X Y Z
0 25 5 3
1 12 7 4
2 15 7 4
3 14 9 5
4 19 12 7
5 23 9 8
6 25 9 8
7 29 4 9

รหัสต่อไปนี้แสดงวิธีสร้างพอยต์คลาวด์โดยใช้จานสีสีเทา และใช้ค่าของตัวแปร z เป็นเฉดสีของจานสี:

 import matplotlib.pyplot as plt

#create scatterplot
plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' gray ')

สีพล็อตกระจาย Matplotlib ตามค่า

สำหรับตัวอย่างนี้ เราเลือกชุดสี “สีเทา” แต่คุณสามารถค้นหารายการชุดสีทั้งหมดที่มีเพื่อใช้ใน เอกสารประกอบชุดสี matplotlib

ตัวอย่างเช่น เราสามารถระบุ “สีเขียว” เป็นชุดสีแทนได้:

 plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' Greens ') 

พล็อตกระจาย Matplotlib พร้อม cmap

ตามค่าเริ่มต้น เครื่องหมายที่มีค่ามากกว่าสำหรับอาร์กิวเมนต์ c จะถูกแรเงาให้เข้มขึ้น แต่คุณสามารถย้อนกลับแนวโน้มนี้ได้โดยเพิ่ม _r ลงในชื่อ cmap:

 plt. scatter (df.x, df.y, s=200, c=df.z, cmap=' Greens_r ') 

จานสี Matplotlib สเกลแบบกลับด้าน

ตัวอย่างที่ 2: คะแนน Scatterplot แบบสีตามหมวดหมู่

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd

#createDataFrame
df = pd.DataFrame({'x': [25, 12, 15, 14, 19, 23, 25, 29],
                   'y': [5, 7, 7, 9, 12, 9, 9, 4],
                   'z': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C']})

#view DataFrame
df

	X Y Z
0 25 5 A
1 12 7 A
2 15 7 B
3 14 9 B
4 19 12 B
5 23 9 C
6 25 9 C
7 29 4 C

รหัสต่อไปนี้แสดงวิธีสร้าง Scatterplot โดยใช้ตัวแปร z เพื่อระบายสีเครื่องหมายตามหมวดหมู่:

 import matplotlib.pyplot as plt

groups = df. groupby ('z')
for name, group in groups:
    plt. plot (group.x, group.y, marker=' o ', linestyle='', markersize=12, label=name)

plt. legend ()

พล็อตกระจาย Matplotlib มีสีตามหมวดหมู่

คุณสามารถค้นหาบทช่วยสอน Python เพิ่มเติมได้ ที่นี่

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *