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

การสร้าง Simple Lollipop Plot ใน Matplotlib

Lollipop Plot แสดงค่าต่างๆ ด้วยเส้นตั้งตรงและวงกลมปลาย คล้าย Bar Chart แต่เบากว่า ใช้ plt.stem()

ขั้นตอน

  1. ตั้งค่าขนาด Figure
  2. สร้าง DataFrame พร้อมข้อมูล
  3. เรียงลำดับข้อมูลด้วย sort_values()
  4. สร้าง Stem Plot
  5. ตั้งค่า Xticks และ Labels
  6. แสดงผล

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


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 ที่ปลาย