Lollipop Plot แสดงค่าต่างๆ ด้วยเส้นตั้งตรงและวงกลมปลาย คล้าย Bar Chart แต่เบากว่า ใช้ plt.stem()
ขั้นตอน
- ตั้งค่าขนาด Figure
- สร้าง DataFrame พร้อมข้อมูล
- เรียงลำดับข้อมูลด้วย
sort_values() - สร้าง Stem Plot
- ตั้งค่า Xticks และ Labels
- แสดงผล
ตัวอย่างโค้ด
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# สร้างข้อมูล: Group A-T, Values สุ่ม
df = pd.DataFrame({
'group': list(map(chr, range(65, 85))), # A-T
'values': np.random.uniform(size=20)
})
# เรียงตามค่า
ordered_df = df.sort_values(by='values')
my_range = range(1, len(df.index) + 1)
# Stem Plot (Lollipop)
plt.stem(ordered_df['values'])
# ตั้งค่า Xticks ให้ตรงกับ Group
plt.xticks(my_range, ordered_df['group'])
plt.show()
การปรับแต่ง Lollipop Plot
# ใช้ Object-Oriented API
fig, ax = plt.subplots()
markerline, stemlines, baseline = ax.stem(
ordered_df['values'],
linefmt='grey', # สีเส้น
markerfmt='D', # รูปทรง Marker (Diamond)
basefmt=' ' # ไม่แสดง Baseline
)
markerline.set_markerfacecolor('red')
markerline.set_markersize(8)
stemlines.set_linewidth(2)
ax.set_xticks(my_range)
ax.set_xticklabels(ordered_df['group'], rotation=45)
plt.show()
ผลลัพธ์
Lollipop Plot แสดง 20 กลุ่ม (A-T) เรียงจากค่าน้อยไปมาก พร้อมเส้นนำและ Marker ที่ปลาย