ข้ามไปเนื้อหา

Matplotlib

จากวิกิพีเดีย สารานุกรมเสรี
Matplotlib
ผู้ออกแบบจอห์น ดี. ฮันเตอร์
นักพัฒนาโครงการชุมชน Matplotlib
วันที่เปิดตัวค.ศ. 2003 (2003)
รุ่นเสถียร
3.11.0 / 12 มิถุนายน 2026; 41 วันก่อน (2026-06-12)
ที่เก็บข้อมูล
ภาษาที่เขียนภาษาไพทอน
เอนจิน
  • Cairo
  • Anti-Grain Geometry
แก้ไขสิ่งนี้ที่วิกิสนเทศ
ระบบปฏิบัติการข้ามแพลตฟอร์ม
ประเภทการแสดงข้อมูลเป็นภาพ, ซอฟต์แวร์สร้างกราฟ
สัญญาอนุญาตMatplotlib license; สัญญาอนุญาตแบบเข้ากันได้กับ BSD
เว็บไซต์matplotlib.org

Matplotlib เป็นไลบรารีของภาษาไพทอนสำหรับสร้างภาพข้อมูล แผนภูมิ และกราฟ ทั้งแบบคงที่ เคลื่อนไหว และโต้ตอบได้ เอกสารทางการอธิบาย Matplotlib ว่าเป็นไลบรารีครบเครื่องสำหรับสร้าง static, animated และ interactive visualizations ในไพทอน[1] ไลบรารีนี้ใช้ร่วมกับNumPyอย่างใกล้ชิด และเป็นองค์ประกอบสำคัญของระบบนิเวศไพทอนด้านการคำนวณเชิงวิทยาศาสตร์ร่วมกับ SciPy, pandas, Jupyter และ scikit-learn

Matplotlib สร้างกราฟได้หลายชนิด เช่น กราฟเส้น แผนภูมิแท่ง ฮิสโทแกรม แผนภาพกระจาย กราฟคอนทัวร์ ภาพข้อมูล กราฟสามมิติ และกราฟเชิงสถิติพื้นฐาน จุดเด่นของไลบรารีคือความยืดหยุ่นสูง สามารถใช้แบบง่ายผ่านโมดูล pyplot ที่คล้าย MATLAB หรือใช้แบบเชิงวัตถุผ่าน Figure และ Axes เพื่อควบคุมองค์ประกอบของกราฟอย่างละเอียด[2][3]

Matplotlib เริ่มพัฒนาโดยจอห์น ดี. ฮันเตอร์ใน ค.ศ. 2003 เพื่อให้ชุมชนวิทยาศาสตร์ไพทอนมีเครื่องมือสร้างกราฟที่ใช้งานคล้าย MATLAB แต่เป็นโอเพนซอร์สและทำงานร่วมกับไพทอนได้เต็มที่[4] ปัจจุบันโครงการพัฒนาโดยชุมชนและเป็นโครงการที่ได้รับการสนับสนุนทางการเงินผ่าน NumFOCUS[5] รุ่นเสถียรล่าสุดคือ 3.11.0 เผยแพร่เมื่อวันที่ 12 มิถุนายน ค.ศ. 2026 ตาม PyPI และเอกสาร stable ของโครงการ[6][7]

ชื่อ

[แก้]

ชื่อ Matplotlib มาจากการผสมคำว่า MATLAB, plot และ library สะท้อนเป้าหมายเดิมของโครงการที่ต้องการให้ผู้ใช้ไพทอนสร้างกราฟได้ในรูปแบบคุ้นเคยกับ MATLAB แต่ไม่ต้องพึ่งซอฟต์แวร์เชิงพาณิชย์[4] ชื่อแพ็กเกจบน Python Package Index คือ matplotlib และธรรมเนียมการใช้งานทั่วไปคือ:

import matplotlib.pyplot as plt

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

ประวัติ

[แก้]

Matplotlib เกิดจากความต้องการของนักวิทยาศาสตร์และวิศวกรที่ใช้ไพทอนในการคำนวณเชิงตัวเลข แต่ยังขาดเครื่องมือสร้างกราฟคุณภาพดีที่เชื่อมกับ NumPy ได้อย่างเป็นธรรมชาติ จอห์น ดี. ฮันเตอร์เริ่มพัฒนาไลบรารีนี้ใน ค.ศ. 2003 โดยตั้งใจให้ผู้ใช้สามารถสร้างกราฟแบบ MATLAB ได้ แต่ยังคงความสามารถของไพทอนในฐานะภาษาโปรแกรมทั่วไป[4]

เอกสารประวัติของโครงการระบุว่า Matplotlib มีรากจากการเลียนแบบคำสั่งกราฟิกของ MATLAB แต่เป็นอิสระจาก MATLAB และสามารถใช้ในแนวทางแบบไพทอนและเชิงวัตถุได้ โครงการเขียนด้วยไพทอนเป็นหลัก แต่ใช้ NumPy และโค้ดส่วนขยายอื่นเพื่อให้ทำงานกับอาร์เรย์ขนาดใหญ่ได้อย่างมีประสิทธิภาพ[4]

หลังการเสียชีวิตของฮันเตอร์ใน ค.ศ. 2012 โครงการยังคงพัฒนาโดยชุมชน Michael Droettboom และ Thomas Caswell มีบทบาทสำคัญในช่วงต่อมา และโครงการเติบโตเป็นซอฟต์แวร์พื้นฐานของ scientific Python[1] ตั้งแต่คริสต์ทศวรรษ 2010 เป็นต้นมา Matplotlib ไม่ได้เป็นเพียงเครื่องมือวาดกราฟโดยตรง แต่ยังเป็น backend หรือรากฐานให้ไลบรารีระดับสูงจำนวนมาก เช่น pandas และ seaborn ใช้สร้างภาพข้อมูล

สถาปัตยกรรมและแนวคิดการใช้งาน

[แก้]

Matplotlib มีแนวคิดหลักคือการแยก “รูปภาพ” ออกจาก “แกนกราฟ” และองค์ประกอบย่อย ภาพหนึ่งภาพอยู่ในวัตถุ Figure ส่วนพื้นที่กราฟหรือแผนภูมิอยู่ในวัตถุ Axes ผู้ใช้สามารถสร้างรูปและแกนด้วย plt.subplots() แล้วเรียกเมทอดของ Axes เพื่อวาดข้อมูล เช่น plot, scatter, bar หรือ imshow[2]

ตัวอย่างการใช้งานแบบเชิงวัตถุ:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("sine wave")
ax.set_xlabel("x")
ax.set_ylabel("sin(x)")
plt.show()

นอกจากแบบเชิงวัตถุ Matplotlib ยังมี pyplot ซึ่งเป็นส่วนติดต่อแบบ state-based หรือคล้าย MATLAB สำหรับการใช้งานแบบโต้ตอบและงานง่าย ๆ[3] อย่างไรก็ตาม เอกสารสมัยใหม่มักแนะนำให้ใช้รูปแบบเชิงวัตถุเมื่อกราฟซับซ้อน มีหลายแกน หรือต้องเขียนโค้ดที่ดูแลรักษาได้ง่าย

Backend และการแสดงผล

[แก้]

Matplotlib แยกส่วนการสร้างกราฟออกจาก backend ที่ใช้แสดงหรือบันทึกผลลัพธ์ Backend คือชั้นซอฟต์แวร์ที่รับคำสั่งวาดภาพแล้วแสดงบนหน้าจอ บันทึกเป็นไฟล์ หรือฝังในแอปพลิเคชัน ผู้ใช้จึงสามารถใช้ Matplotlib ในสคริปต์ไพทอน, Python shell, Jupyter Notebook, เว็บแอปพลิเคชัน หรือโปรแกรมที่มี GUI ได้[1]

Matplotlib รองรับ backend หลายแบบ เช่น Agg สำหรับการเรนเดอร์เป็นภาพ raster, PDF, SVG และ PS สำหรับงานส่งออกเอกสาร รวมถึง backend แบบโต้ตอบที่เชื่อมกับ GUI toolkit เช่น Qt, Tk, GTK และ wxPython[8] ความสามารถนี้ทำให้ Matplotlib ใช้ได้ทั้งในงานวิจัยที่ต้องการภาพคุณภาพตีพิมพ์และในโปรแกรมที่ต้องฝังกราฟไว้ในส่วนติดต่อผู้ใช้

ประเภทกราฟและตัวอย่างภาพ

[แก้]

Matplotlib สามารถสร้างภาพข้อมูลได้หลายแบบ ตั้งแต่กราฟพื้นฐานจนถึงภาพเชิงคณิตศาสตร์และวิทยาศาสตร์ที่ซับซ้อน ตัวอย่างในแกลเลอรีทางการมีทั้งกราฟเส้น แผนภูมิแท่ง แผนภาพกระจาย ฮิสโทแกรม box plot, errorbar, contour, heatmap, image, polar plot, 3D plot และกราฟแบบกำหนดแกนหรือ layout ซับซ้อน[9]

pyplot และ pylab

[แก้]

matplotlib.pyplot เป็นโมดูลที่นิยมใช้มากที่สุดของ Matplotlib เพราะมีคำสั่งสั้นและคล้าย MATLAB เช่น plot, scatter, hist, imshow และ show เอกสารทางการอธิบายว่า pyplot เป็น state-based interface ที่ให้วิธีวาดกราฟแบบ MATLAB-like และเหมาะกับกราฟโต้ตอบหรืองานสร้างกราฟอย่างง่าย[3]

ส่วน pylab เป็นส่วนติดต่อที่รวมคำสั่งจาก Matplotlib กับ NumPy เพื่อให้คล้าย MATLAB มากยิ่งขึ้น แต่ปัจจุบันไม่แนะนำให้ใช้ในโค้ดใหม่ เพราะทำให้ namespace ปะปนและทำให้โค้ดอ่านยากกว่าแนวทาง import numpy as np และ import matplotlib.pyplot as plt[10]

ความสัมพันธ์กับ NumPy, SciPy และ pandas

[แก้]

Matplotlib ใช้ NumPy เป็นฐานสำหรับข้อมูลเชิงตัวเลข ผู้ใช้มักส่งอาร์เรย์ของ NumPy เข้าไปยังฟังก์ชันวาดกราฟโดยตรง เช่น ax.plot(x, y) หรือ ax.imshow(image) เอกสารประวัติของ Matplotlib ระบุว่าไลบรารีใช้ NumPy และโค้ดส่วนขยายเพื่อให้ทำงานกับอาร์เรย์ขนาดใหญ่ได้ดี[4]

ในระบบนิเวศ SciPy, Matplotlib ทำหน้าที่เป็นเครื่องมือแสดงผลหลักสำหรับข้อมูลที่คำนวณจาก NumPy, SciPy, scikit-learn และไลบรารีอื่น แม่แบบ SciPy ecosystem จึงมักจัด Matplotlib ไว้คู่กับ NumPy, SciPy, pandas, IPython, SymPy และ scikit-learn ในฐานะเครื่องมือหลักของ scientific Python[11]

pandas มีเมทอด DataFrame.plot และ Series.plot ที่ใช้ Matplotlib เป็น backend พื้นฐานในหลายกรณี ทำให้ผู้ใช้สามารถสร้างกราฟจากตารางข้อมูลได้โดยไม่ต้องเขียนโค้ด Matplotlib โดยตรงมากนัก ขณะที่ seaborn เป็นไลบรารีระดับสูงที่สร้างบน Matplotlib และเน้นกราฟเชิงสถิติพร้อมค่าเริ่มต้นที่สวยงามกว่า

การใช้งานในวิทยาศาสตร์และการศึกษา

[แก้]

Matplotlib ถูกใช้กว้างในงานวิจัย การศึกษา วิศวกรรม วิทยาศาสตร์ข้อมูล และการสื่อสารผลการวิเคราะห์ ตัวอย่างหนึ่งคือความร่วมมือ Event Horizon Telescope ซึ่งใช้เครื่องมือในระบบนิเวศไพทอนรวมถึง NumPy และ Matplotlib ในกระบวนการสร้างภาพและวิเคราะห์ข้อมูลของภาพหลุมดำภาพแรก[12]

ใน ค.ศ. 2024 NASA ให้ทุน 15.6 ล้านดอลลาร์สหรัฐแก่โครงการโอเพนซอร์ส 15 โครงการที่เป็นเครื่องมือสำคัญของชุมชนวิทยาศาสตร์ และ Matplotlib เป็นหนึ่งในเครื่องมือที่ได้รับการอ้างถึงในบริบทการสนับสนุนซอฟต์แวร์วิทยาศาสตร์โอเพนซอร์สที่ใช้แพร่หลายในงานของ NASA[13]

ในการศึกษา Matplotlib มักใช้สอนการเขียนโปรแกรม การวิเคราะห์ข้อมูล และการสร้างภาพข้อมูล เพราะติดตั้งง่าย มีตัวอย่างจำนวนมาก และทำงานกับ Jupyter Notebook ได้ดี Jupyter ทำให้ผู้เรียนสามารถเขียนโค้ด วิเคราะห์ข้อมูล และดูกราฟในเอกสารเดียวกัน ซึ่งเหมาะกับการเรียนการสอนและงานวิจัยแบบทำซ้ำได้[14]

เครื่องมือขยายและโครงการที่เกี่ยวข้อง

[แก้]

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

  • seaborn ไลบรารีสร้างกราฟเชิงสถิติระดับสูงบน Matplotlib
  • Cartopy เครื่องมือสร้างแผนที่และแปลงพิกัดภูมิศาสตร์
  • pandas plotting เมทอดสร้างกราฟจาก DataFrame และ Series
  • mplfinance สำหรับกราฟทางการเงิน
  • mpld3 สำหรับแปลงกราฟ Matplotlib ไปเป็นภาพแบบโต้ตอบบนเว็บ
  • SciencePlots หรือ style package อื่น ๆ สำหรับปรับรูปแบบภาพให้เหมาะกับงานตีพิมพ์
  • SageMath ซึ่งใช้ Matplotlib ในการวาดกราฟบางส่วน

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

ข้อจำกัดและเสียงวิจารณ์

[แก้]

Matplotlib มีพลังและยืดหยุ่นสูง แต่ก็ถูกวิจารณ์ว่ามี API หลายระดับ ทำให้ผู้เริ่มต้นสับสนระหว่าง pyplot, รูปแบบเชิงวัตถุ, backend, artist และ rcParams โค้ดง่าย ๆ อาจสั้นมาก แต่เมื่อกราฟซับซ้อน ผู้ใช้ต้องเข้าใจโครงสร้างภายในของ Matplotlib มากขึ้น

อีกข้อจำกัดคือกราฟเชิงโต้ตอบบนเว็บของ Matplotlib ไม่ใช่จุดแข็งหลักเมื่อเทียบกับไลบรารีอย่าง Plotly, Bokeh หรือ Altair ซึ่งออกแบบมาสำหรับเว็บและการโต้ตอบโดยตรง อย่างไรก็ตาม Matplotlib ยังแข็งแกร่งในงานสร้างภาพคุณภาพสูงสำหรับสิ่งพิมพ์ ไฟล์ PDF/SVG/PNG และการใช้งานภายในระบบวิทยาศาสตร์ไพทอน

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

[แก้]

ตัวอย่างกราฟเส้นพื้นฐาน:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 200)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y, label="sin(x)")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.legend()
plt.show()

ตัวอย่างฮิสโทแกรม:

import numpy as np
import matplotlib.pyplot as plt

rng = np.random.default_rng(0)
data = rng.normal(size=1000)

fig, ax = plt.subplots()
ax.hist(data, bins=30)
ax.set_title("Histogram")
plt.show()

ตัวอย่างภาพข้อมูลสองมิติ:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3, 3, 200)
y = np.linspace(-3, 3, 200)
X, Y = np.meshgrid(x, y)
Z = np.exp(-(X**2 + Y**2))

fig, ax = plt.subplots()
image = ax.imshow(Z, extent=[-3, 3, -3, 3], origin="lower")
fig.colorbar(image, ax=ax)
plt.show()

ดูเพิ่ม

[แก้]

อ้างอิง

[แก้]
  1. 1 2 3 "Matplotlib: Visualization with Python". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  2. 1 2 "Quick start guide". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  3. 1 2 3 "matplotlib.pyplot". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  4. 1 2 3 4 5 "History". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  5. "Sponsored Projects". NumFOCUS. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  6. "matplotlib". Python Package Index. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  7. "Matplotlib 3.11.0 documentation". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  8. "Backends". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  9. "API Reference". Matplotlib development team. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  10. "SciPy.org". SciPy community. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  11. "Case Study: First Image of a Black Hole". NumPy. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  12. "NASA Funds Open-Source Software Underpinning Scientific Innovation". NASA. 24 ตุลาคม 2024. สืบค้นเมื่อ 8 กรกฎาคม 2026.
  13. "Interactive notebooks: Sharing the code". Nature. 18 กันยายน 2018. สืบค้นเมื่อ 8 กรกฎาคม 2026.

อ่านเพิ่ม

[แก้]
  • VanderPlas, Jake (2016). Python Data Science Handbook: Essential Tools for Working with Data. O'Reilly. ISBN 978-1491912058.
  • McKinney, Wes (2022). Python for Data Analysis (3rd ed.). O'Reilly. ISBN 978-1098104030.

แหล่งข้อมูลอื่น

[แก้]

วิกิมีเดียคอมมอนส์มีสื่อเกี่ยวกับ Matplotlib