ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ
เพิ่มป้ายกำกับแกน ชื่อเรื่อง คำอธิบาย และรูปแบบขีดเครื่องหมาย แล้วบันทึกภาพคุณภาพระดับสิ่งพิมพ์ด้วย savefig()
ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
จากการพล็อตสู่สิ่งพิมพ์
แผนภูมิจะมีประสิทธิภาพก็ต่อเมื่อมีป้ายกำกับแกน ชื่อเรื่องอธิบายข้อสรุปสำคัญ และบันทึกด้วยความละเอียดสูงเพียงพอสำหรับสื่อที่จะนำไปใช้ บทเรียนนี้ครอบคลุมการตกแต่งขั้นสุดท้ายที่เปลี่ยนการพล็อตเพื่อสำรวจข้อมูลอย่างรวดเร็วให้เป็นรูปที่เรียบร้อย เหมาะสำหรับรายงาน แดชบอร์ด หรือสิ่งพิมพ์ทางวิชาการ ได้แก่ ป้ายกำกับแกน การจัดรูปแบบค่าขีด ชื่อเรื่อง คำอธิบายสัญลักษณ์ ข้อความกำกับ และการส่งออกไฟล์
ป้ายกำกับแกนด้วย set_xlabel และ set_ylabel
กำหนดป้ายกำกับแกนที่สื่อความหมายด้วย ax.set_xlabel() และ ax.set_ylabel() ควรใส่หน่วยไว้ในป้ายกำกับเสมอ (เช่น 'Revenue (USD)' แทนที่จะใช้เพียง 'Revenue') ใช้ fontsize เพื่อขยายป้ายกำกับสำหรับการนำเสนอ และใช้ labelpad เพื่อเพิ่มระยะห่างระหว่างแกนกับข้อความป้ายกำกับเมื่อค่าขีดมีขนาดใหญ่
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')
ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()ชื่อเรื่องด้วย set_title และ suptitle
ax.set_title() กำหนดชื่อเรื่องเหนือ Axes เดียว สำหรับรูปหลายแผง fig.suptitle() จะเพิ่มชื่อเรื่องร่วมเหนือแผงย่อยทั้งหมด ควบคุมขนาดตัวอักษรด้วย fontsize และตำแหน่งแนวตั้งด้วย y (ค่าเริ่มต้นคือ 1.0) ชื่อเรื่องที่ดีควรระบุข้อค้นพบหลักของแผนภูมิ ไม่ใช่เพียงบอกว่าแกนคืออะไร ลองเปรียบเทียบ 'Monthly Revenue' กับ 'Revenue Peaked in Q3 and Fell 20% in Q4'
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)
ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)
# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()การควบคุมป้ายกำกับค่าขีด
ป้ายกำกับค่าขีดเริ่มต้นของ Matplotlib มักเพียงพอ แต่บางครั้งคุณอาจต้องใช้ป้ายกำกับแบบกำหนดเอง ใช้ ax.set_xticks() เพื่อระบุตำแหน่งค่าขีด และ ax.set_xticklabels() เพื่อกำหนดป้ายกำกับ ส่ง rotation=45 เพื่อเอียงป้ายกำกับที่ยาวไม่ให้ซ้อนทับกัน พารามิเตอร์ ha='right' (การจัดแนวนอน) ช่วยให้ป้ายกำกับที่เอียงยึดตำแหน่งกับขีดของตนได้อย่างถูกต้อง
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)
fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()การจัดรูปแบบค่าขีด
ใช้ตัวจัดรูปแบบของ matplotlib.ticker เพื่อแสดงค่าขีดในรูปแบบที่อ่านเข้าใจง่าย FuncFormatter รับฟังก์ชันที่ได้รับค่าขีดและส่งคืนสตริงที่จัดรูปแบบแล้ว รูปแบบที่ใช้บ่อย ได้แก่ ตัวคั่นหลักพัน สัญลักษณ์สกุลเงิน เครื่องหมายเปอร์เซ็นต์ และสัญกรณ์วิทยาศาสตร์ ใช้งานด้วย ax.yaxis.set_major_formatter(formatter)
from matplotlib.ticker import FuncFormatter
def millions_fmt(x, pos):
return f'${x/1e6:.1f}M'
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()คำอธิบายสัญลักษณ์ด้วย ax.legend()
เรียกใช้ ax.legend() เพื่อแสดงคำอธิบายสัญลักษณ์สำหรับองค์ประกอบการพล็อตทั้งหมดที่กำหนดพารามิเตอร์ label ไว้ ปรับแต่งได้ด้วย loc (ตำแหน่ง เช่น 'upper right', 'lower left'), ncol (จำนวนคอลัมน์), framealpha (ความโปร่งใสของกรอบ) และ fontsize หากต้องการวางคำอธิบายสัญลักษณ์นอกพื้นที่พล็อต ให้ใช้ bbox_to_anchor ร่วมกับ loc
fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
ax.plot(range(12), np.random.randint(100, 400, 12),
marker='o', label=region, color=color)
ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()การเพิ่มข้อความกำกับ
ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...) เพิ่มป้ายข้อความพร้อมลูกศรที่เลือกใส่ได้ เพื่อชี้ไปยังจุดข้อมูลที่ระบุ ใช้เพื่อเน้นค่าสูงสุด ค่าผิดปกติ หรือเหตุการณ์สำคัญบนแผนภูมิ ดิกชันนารี arrowprops ใช้ควบคุมรูปแบบลูกศร โดย arrowstyle='->' คือลูกศรแบบเรียบง่าย
y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
xy=(peak_idx, y_vals[peak_idx]),
xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
arrowprops={'arrowstyle': '->', 'color': 'red'},
fontsize=10, color='red')
plt.close()การเพิ่มเส้นอ้างอิงแนวนอนและแนวตั้ง
ax.axhline(y_value) วาดเส้นแนวนอนตลอดความกว้างของ Axes ที่ค่า y ซึ่งระบุไว้ ส่วน ax.axvline(x_value) วาดเส้นแนวตั้ง ทั้งสองฟังก์ชันรับพารามิเตอร์ color, linestyle และ linewidth เส้นอ้างอิงมักใช้เพื่อแสดงเป้าหมาย เกณฑ์จำกัด หรือวันที่เกิดเหตุการณ์บนแผนภูมิอนุกรมเวลา
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')
# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')
# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')
ax.legend()
ax.set_title('Revenue vs Target')
plt.close()การจัดรูปแบบด้วยธีม
Matplotlib มีสไตล์ชีตในตัวหลายแบบ ซึ่งเปลี่ยนรูปลักษณ์โดยรวมของรูปทั้งหมดได้โดยไม่ต้องแก้โค้ด ได้แก่ 'seaborn-v0_8-whitegrid', 'fivethirtyeight', 'ggplot', 'bmh' เป็นต้น ใช้สไตล์ด้วย plt.style.use('style_name') ที่ตอนเริ่มสคริปต์ ใช้ plt.style.context('style_name') เป็นตัวจัดการบริบทเพื่อใช้สไตล์เฉพาะภายในบล็อกหนึ่ง
# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()
# Reset to default
plt.rcdefaults()การบันทึกรูปด้วย savefig()
fig.savefig('filename.png') บันทึกรูปลงในไฟล์ พารามิเตอร์สำคัญ ได้แก่ dpi (จุดต่อนิ้ว — ใช้ 150 สำหรับหน้าจอ และ 300 สำหรับงานพิมพ์), bbox_inches='tight' (ป้องกันไม่ให้ป้ายกำกับถูกตัด) และ format (อนุมานจากนามสกุลไฟล์หรือระบุอย่างชัดเจน) รูปแบบที่ใช้บ่อย ได้แก่ '.png' (แรสเตอร์ เหมาะสำหรับเว็บ), '.pdf' (เวกเตอร์ เหมาะสำหรับงานพิมพ์) และ '.svg' (เวกเตอร์ แก้ไขได้ใน Illustrator)
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')
# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')
# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')
plt.close()
print('Figures saved.')ตัวอย่างสมบูรณ์: แผนภูมิรายงานที่จัดรูปแบบอย่างเรียบร้อย
ต่อไปนี้คือกระบวนการทำงานที่สมบูรณ์ ซึ่งรวมเทคนิคทั้งหมดในบทเรียนนี้เข้าด้วยกัน: แผนภูมิอนุกรมเวลาที่จัดรูปแบบอย่างเรียบร้อย พร้อมป้ายกำกับแกน ค่าขีดแกน y ที่จัดรูปแบบแล้ว เส้นเป้าหมายแนวนอน ข้อความกำกับจุดสูงสุด และการส่งออกเป็น PNG ความละเอียดสูง นี่คือรูปแบบที่คุณจะใช้กับแผนภูมิใด ๆ ที่นำไปใส่ในรายงานหรือแดชบอร์ด
from matplotlib.ticker import FuncFormatter
fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)
ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
xytext=(peak_idx-1.5, peak+15),
arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับป้ายกำกับ ชื่อเรื่อง และการบันทึกรูปจากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า set_xlabel()/set_ylabel()/set_title() ใช้เพิ่มข้อความอธิบาย; FuncFormatter ใช้จัดรูปแบบค่าขีดเป็นสกุลเงินหรือเปอร์เซ็นต์; ax.annotate() ใช้เพิ่มป้ายข้อความพร้อมลูกศรเพื่อเน้นจุดข้อมูลสำคัญ; axhline()/axvline() ใช้วาดเส้นอ้างอิง; และ fig.savefig() ร่วมกับ dpi และ bbox_inches='tight' ใช้สร้างไฟล์ส่งออกคุณภาพระดับสิ่งพิมพ์ บทนี้เป็นการจบหลักสูตรพื้นฐาน Matplotlib — บทถัดไปคือ Seaborn สำหรับการพล็อตเชิงสถิติ
คำถามที่พบบ่อย
บทเรียน “ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ”
เพิ่มป้ายกำกับแกน ชื่อเรื่อง คำอธิบาย และรูปแบบขีดเครื่องหมาย แล้วบันทึกภาพคุณภาพระดับสิ่งพิมพ์ด้วย savefig() คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม
ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สถาปัตยกรรม Figure และ Axes
- กราฟเส้นและกราฟกระจาย
- กราฟแท่งและฮิสโตแกรม
- ป้ายกำกับ ชื่อเรื่อง และการบันทึกภาพ