บทนำ
Scatter plot แสดงความสัมพันธ์ระหว่างสองตัวแปร สามารถเพิ่มมิติที่ 3 (ขนาดจุด) และมิติที่ 4 (สี) ได้
ขั้นตอน
- ติดตั้ง matplotlib:
pip install matplotlib - นำเข้าและเตรียมข้อมูล:
import matplotlib.pyplot as plt import random tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17), ...) titles = [t for _, t in tennis_stats] players = [p for p, _ in tennis_stats] - จัดรูปแบบแกน X ให้เป็นจำนวนเต็ม:
from matplotlib.ticker import FuncFormatter def format_titles(title, pos): return '{}'.format(int(title)) plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles)) - กำหนดสีสุ่มและขนาดจุดสุ่ม:
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F'] color = [random.choice(random_colors) for _ in range(len(titles))] size = [(50 * random.random()) ** 2 for _ in range(len(titles))] - วาด scatter plot:
plt.xlabel('Grandslam Titles') plt.ylabel('Tennis Player') plt.scatter(titles, players, c=color, s=size, alpha=0.1)
โค้ดเต็ม
import matplotlib.pyplot as plt
import random
from matplotlib.ticker import FuncFormatter
tennis_stats = (('Federer', 20), ('Nadal', 20), ('Djokovic', 17),
('Sampras', 14), ('Emerson', 12), ('Laver', 11),
('Murray', 3), ('Wawrinka', 3), ('Zverev', 0),
('Thiem', 1), ('Medvedev', 0), ('Tsitsipas', 0),
('Dimitrov', 0), ('Rublev', 0))
titles = [t for _, t in tennis_stats]
players = [p for p, _ in tennis_stats]
def format_titles(title, pos):
return '{}'.format(int(title))
random_colors = ['#FF0000', '#FFFF00', '#FFFFF0', '#FFFFFF', '#00000F']
color = [random.choice(random_colors) for _ in range(len(titles))]
size = [(50 * random.random()) ** 2 for _ in range(len(titles))]
plt.gca().xaxis.set_major_formatter(FuncFormatter(format_titles))
plt.xlabel('Grandslam Titles')
plt.ylabel('Tennis Player')
plt.scatter(titles, players, c=color, s=size, alpha=0.1)
plt.show()