0Pricing
Python Academy · บทเรียน

รูปและแกน

ทำความเข้าใจโมเดลการวาดกราฟ

รูปและแกน เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

โมเดลการพล็อต

Matplotlib คือไลบรารีพื้นฐานสำหรับการพล็อตใน Python หากต้องการใช้งานอย่างมีประสิทธิภาพ คุณต้องเข้าใจโมเดลสองระดับของไลบรารีนี้ ได้แก่ รูปภาพและพื้นที่พล็อต

รูปภาพคือหน้าต่างหรือหน้ากระดาษโดยรวมที่ใช้วาดทุกอย่าง ส่วนพื้นที่พล็อตคือพล็อตหนึ่งรายการภายในรูปภาพนั้น โดยมีระบบพิกัด x และ y เป็นของตัวเอง

  • รูปภาพหนึ่งรูปสามารถมีพื้นที่พล็อตได้หลายพื้นที่
  • ข้อมูลจะอยู่ในพื้นที่พล็อตแต่ละพื้นที่

รูปภาพเทียบกับพื้นที่พล็อตเทียบกับแกน

คำศัพท์สามคำนี้สับสนกันได้ง่าย:

  • รูปภาพ คือภาพทั้งหมดหรือพื้นที่บรรจุองค์ประกอบต่าง ๆ
  • พื้นที่พล็อต คือบริเวณสำหรับพล็อตหนึ่งรายการ (โปรดสังเกตการสะกด คำนี้ไม่ใช่รูปพหูพจน์ของแกน)
  • แกน คือเส้นตัวเลขของแกน x หรือแกน y ภายในพื้นที่พล็อต

ดังนั้น รูปภาพจึงบรรจุพื้นที่พล็อต และพื้นที่พล็อตแต่ละแห่งจะบรรจุออบเจ็กต์แกนสองชิ้น (หรือสามชิ้น)

การสร้างรูปภาพและพื้นที่พล็อต

วิธีที่แนะนำในการเริ่มต้นคือ plt.subplots() ซึ่งส่งคืนรูปภาพและพื้นที่พล็อตในการเรียกใช้ครั้งเดียว

แม้ไม่แสดงผล เราก็ยังทำความเข้าใจโมเดลนี้ได้ไม่ยาก ในที่นี้เราจะจำลองสิ่งที่ออบเจ็กต์เหล่านี้ใช้แทน

fig = {'type': 'Figure', 'axes': []}
ax = {'type': 'Axes', 'parent': 'Figure'}
fig['axes'].append(ax)
print('Figure holds', len(fig['axes']), 'axes')
print('Axes parent is the', ax['parent'])

อินเทอร์เฟซไพพล็อต

Matplotlib มีรูปแบบการใช้งานสองแบบ รูปแบบไพพล็อต (อิงสถานะ) ใช้ plt.plot() และติดตามรูปภาพปัจจุบันโดยอัตโนมัติ ส่วนรูปแบบเชิงออบเจ็กต์ใช้ ax.plot() อย่างชัดเจน

สำหรับงานที่ซับซ้อนกว่าการร่างภาพอย่างรวดเร็ว ควรเลือกรูปแบบเชิงออบเจ็กต์ เพราะจะเข้าใจได้ชัดเจนกว่าเมื่อมีพื้นที่พล็อตหลายพื้นที่

เหตุใดรูปแบบเชิงออบเจ็กต์จึงดีกว่า

เมื่อคุณเรียกใช้ plt.title('X') คำสั่งนี้จะมีผลกับพื้นที่พล็อตที่เป็นปัจจุบันในขณะนั้น การทำงานนี้อาจไม่ชัดเจนเมื่อมีพล็อตย่อยหลายรายการ

แต่เมื่อใช้ ax.set_title('X') ก็ไม่ต้องคาดเดา เพราะเมธอดจะทำงานกับพื้นที่พล็อตที่คุณระบุไว้อย่างเจาะจง

ระบบพิกัด

พื้นที่พล็อตแต่ละแห่งจะแปลงค่าข้อมูลเป็นตำแหน่งแสดงผล พิกัดข้อมูลคือความหมายของตัวเลข ส่วนพื้นที่พล็อตจะปรับขนาดตัวเลขเหล่านั้นให้พอดีกับบริเวณวาดภาพ

เราสามารถจำลองการแปลงนี้ด้วยคณิตศาสตร์พื้นฐานได้

data_min, data_max = 0, 100
pixel_min, pixel_max = 0, 400

def to_pixels(value):
    frac = (value - data_min) / (data_max - data_min)
    return pixel_min + frac * (pixel_max - pixel_min)

for v in [0, 25, 50, 100]:
    print('data', v, '->', to_pixels(v), 'px')

ขนาดรูปภาพและ DPI

รูปภาพมีขนาดเป็นนิ้วและมีความละเอียดเป็นจุดต่อนิ้ว (DPI) ขนาดพิกเซลเกิดจากผลคูณของค่าทั้งสอง

ตัวอย่างเช่น รูปภาพขนาด 6x4 นิ้วที่ความละเอียด 100 DPI จะมีขนาด 600x400 พิกเซล

width_in, height_in = 6, 4
dpi = 100
print('Pixels:', width_in * dpi, 'x', height_in * dpi)

การเพิ่มพื้นที่พล็อตด้วยตนเอง

นอกจาก plt.subplots() แล้ว คุณยังเพิ่มพื้นที่พล็อตในสี่เหลี่ยมผืนผ้าที่กำหนดอย่างแม่นยำได้ด้วย fig.add_axes([left, bottom, width, height]) โดยค่าแต่ละค่าคือสัดส่วนของรูปภาพระหว่าง 0 ถึง 1

วิธีนี้ใช้สร้างพล็อตแทรกและโครงร่างแบบกำหนดเอง

รูปภาพปัจจุบัน

ไพพล็อตจะเก็บทะเบียนของรูปภาพต่าง ๆ และตัวชี้ไปยังรูปภาพปัจจุบัน plt.gcf() ใช้ดึงรูปภาพปัจจุบัน ส่วน plt.gca() ใช้ดึงพื้นที่พล็อตปัจจุบัน

องค์ประกอบเหล่านี้มีไว้เพื่อรองรับรูปแบบที่อิงสถานะเป็นหลัก ส่วนโค้ดแบบเชิงออบเจ็กต์จะเก็บการอ้างอิงของคุณเองแทน

การแสดงและการปิดรูปภาพ

plt.show() จะแสดงผลรูปภาพที่เปิดอยู่ทั้งหมดในหน้าต่าง ส่วน plt.close() จะคืนหน่วยความจำของรูปภาพ ในสคริปต์ที่สร้างรูปภาพจำนวนมาก การปิดรูปภาพจะช่วยป้องกันการใช้หน่วยความจำสะสม

ในสมุดบันทึก รูปภาพจะแสดงภายในเนื้อหาโดยอัตโนมัติ

รายการตรวจสอบในใจ

ก่อนวาดสิ่งใด ให้ถามตัวเองว่า:

  • ต้องใช้รูปภาพกี่รูป
  • แต่ละรูปต้องมีพื้นที่พล็อตกี่แห่ง
  • ข้อมูลแต่ละส่วนเป็นของพื้นที่พล็อตใด

การตอบคำถามเหล่านี้ก่อนจะทำให้การใช้ส่วนติดต่อการเขียนโปรแกรมเชิงวัตถุเป็นเรื่องเป็นธรรมชาติ

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับรูปภาพและแบบจำลองพื้นที่พล็อต

ทบทวน

คุณได้เรียนรู้แบบจำลองหลักของ Matplotlib แล้ว:

  • รูปภาพ เป็นตัวบรรจุข้อมูล โดยมีขนาดวัดเป็นนิ้วคูณด้วย DPI
  • พื้นที่พล็อต คือแผนภาพแต่ละรายการที่มีพิกัดของตนเอง
  • แกน คือเส้นตัวเลขของแกน x หรือ y
  • ควรใช้รูปแบบเชิงวัตถุด้วย fig, ax = plt.subplots()

ด้วยแบบจำลองในใจนี้ การปรับแต่งทุกอย่างในภายหลังจะคาดเดาได้

คำถามที่พบบ่อย

บทเรียน “รูปและแกน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “รูปและแกน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “รูปและแกน”

ทำความเข้าใจโมเดลการวาดกราฟ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “รูปและแกน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. รูปและแกน
  2. กราฟเส้น แท่ง และกระจาย
  3. การปรับแต่งกราฟ
  4. กราฟย่อยและการจัดวาง
← กลับไปที่ Python Academy