วิธีใดเป็นวิธีที่แนะนำในการลงจุด: matplotlib หรือ pylab [ปิด]


88

ฉันเห็นว่าฉันสามารถพล็อตในPythonโดยใช้:

import matplotlib
matplotlib.pyplot.plot(...)

หรือ:

import pylab
pylab.plot(...)

ทั้งสองคนนี้ใช้เดียวกันmatplotlibรหัสพล็อต

ดังนั้นนักพัฒนา / เอกสาร Matplotlib ข้อใดแนะนำให้เป็นวิธีที่ดีกว่าในการลงจุด ทำไม?


1
เป็นไปได้ที่ซ้ำกันของpylab กับ pyplot ต่างกันอย่างไร
tacaswell

9
การทำสำเนาอ้างอิงด้วยตนเอง?
Mad Physicist

4
สิ่งนี้ไม่ควรปิดตามความเห็น ขณะนี้มีคำตอบที่ชัดเจนจากเอกสาร Matplotlib: ใช้เสมอmatplotlib.pyplot
Bernhard

คำตอบ:


104

เอกสารทางการ: Matplotlib, pyplot และ pylab: เกี่ยวข้องกันอย่างไร

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

โปรดทราบว่าmatplotlibมีเลเยอร์อินเทอร์เฟซสองชั้นเลเยอร์สถานะเครื่องที่จัดการโดยpyplotและอินเทอร์เฟซ OO pyplotถูกสร้างขึ้นที่ด้านบนโปรดดูที่ฉันจะแนบฟังก์ชัน pyplot กับอินสแตนซ์รูปได้อย่างไร

pylabเป็นวิธีที่สะอาดในการนำเข้าฟังก์ชันที่เป็นประโยชน์จำนวนมาก (ฟังก์ชันpyplotstate machine ส่วนใหญ่numpy) ลงในช่องชื่อเดียว เหตุผลหลักที่มีอยู่ (ตามความเข้าใจของฉัน) คือการทำงานร่วมกับipythonการสร้างเชลล์แบบโต้ตอบที่ดีมากซึ่งจำลอง MATLAB มากขึ้นหรือน้อยลง (เพื่อให้การเปลี่ยนแปลงง่ายขึ้นและเป็นเรื่องที่ดีสำหรับการเล่นรอบ) ดูpylab.pyและmatplotlib/pylab.py

ในบางระดับนี่เป็นเรื่องของรสนิยมล้วนๆและขึ้นอยู่กับสิ่งที่คุณกำลังทำ

หากคุณไม่ได้ฝังไว้ใน gui (ไม่ว่าจะใช้แบ็กเอนด์ที่ไม่ใช่แบบโต้ตอบสำหรับสคริปต์จำนวนมากหรือใช้แบ็กเอนด์แบบโต้ตอบที่มีให้) สิ่งที่ต้องทำโดยทั่วไปคือ

import matplotlib.pyplot as plt
import numpy as np

plt.plot(....)

ซึ่งไม่ก่อให้เกิดมลพิษต่อพื้นที่ชื่อ ฉันชอบสิ่งนี้เพื่อที่ฉันจะได้ติดตามว่าของมาจากไหน

ถ้าคุณใช้

ipython --pylab

สิ่งนี้เทียบเท่ากับการวิ่ง

from pylab import * 

ตอนนี้ขอแนะนำให้ipythonคุณใช้เวอร์ชันใหม่

ipython --matplotlib

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

import numpy as np
import matplotlib.pyplot as plt

เป็นการเริ่มต้นที่ดี

หากคุณฝังmatplotlibใน gui คุณไม่ต้องการนำเข้า pyplot เนื่องจากจะเริ่มลูปหลัก gui พิเศษและสิ่งที่คุณควรนำเข้านั้นขึ้นอยู่กับสิ่งที่คุณกำลังทำ


20
ความแตกต่างระหว่าง pylab และ pyplot คือการนำเข้า numpy ในเนมสเปซในอดีต นี่คือการทำให้มันทำงานคล้ายกับ matlab มากขึ้น ตอนนี้แนะนำให้ใช้ pyplot แทน pylab เพราะสะอาดกว่า
Christian Alis

8

เอกสารประกอบที่https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-relatedซึ่งอธิบายความแตกต่างระหว่าง pyglot และ pylab ด้วยเช่นกันรัฐ: "แม้ว่าหลายตัวอย่างจะใช้ pylab ไม่แนะนำอีกต่อไป " . ดังนั้นฉันไม่เห็นเหตุผลที่จะใช้pylabหรือกังวลเกี่ยวกับมัน


1
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ เอกสาร "อย่างเป็นทางการ" คือบ่อน้ำและบอกว่าไม่แนะนำให้ใช้ไพแล็บอีกต่อไป
dturvene
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.