Matplotlib มีฟังก์ชั่น:
cla() # Clear axis
clf() # Clear figure
close() # Close a figure window
เอกสารไม่ได้ให้ข้อมูลเชิงลึกเกี่ยวกับความแตกต่างระหว่างฟังก์ชั่นเหล่านี้ ฉันควรใช้แต่ละฟังก์ชั่นเมื่อไหร่และจะทำอย่างไร?
Matplotlib มีฟังก์ชั่น:
cla() # Clear axis
clf() # Clear figure
close() # Close a figure window
เอกสารไม่ได้ให้ข้อมูลเชิงลึกเกี่ยวกับความแตกต่างระหว่างฟังก์ชั่นเหล่านี้ ฉันควรใช้แต่ละฟังก์ชั่นเมื่อไหร่และจะทำอย่างไร?
คำตอบ:
พวกเขาทำสิ่งที่แตกต่างกันเนื่องจาก matplotlib ใช้ลำดับชั้นที่หน้าต่างรูปมีตัวเลขซึ่งอาจประกอบด้วยหลายแกน นอกจากนี้ยังมีฟังก์ชั่นจากส่วนต่อประสาน pyplot และมีวิธีการในFigureชั้นเรียน ฉันจะหารือเกี่ยวกับทั้งสองกรณีด้านล่าง
pyplotเป็นโมดูลที่รวบรวมสองฟังก์ชันที่อนุญาตให้ใช้ matplotlib ในลักษณะการทำงาน ฉันนี่สมมติว่าได้รับนำเข้าเป็นpyplot import matplotlib.pyplot as pltในกรณีนี้มีสามคำสั่งต่าง ๆ ที่จะลบสิ่งต่าง ๆ :
plt.cla()ล้างแกนนั่นคือแกนที่ใช้งานในปัจจุบันในรูปปัจจุบัน มันปล่อยให้แกนอื่น ๆ ไม่มีใครแตะต้อง
plt.clf()ล้างตัวเลขปัจจุบันทั้งหมดด้วยแกนทั้งหมด แต่เปิดหน้าต่างทิ้งไว้เพื่อให้สามารถนำกลับมาใช้ใหม่สำหรับแปลงอื่นได้
plt.close()ปิดหน้าต่างซึ่งจะเป็นหน้าต่างปัจจุบันหากไม่ได้ระบุเป็นอย่างอื่น
ฟังก์ชันใดที่เหมาะกับคุณที่สุดขึ้นอยู่กับการใช้งานของคุณ
close()ฟังก์ชั่นนอกจากนี้ยังช่วยให้หนึ่งเพื่อระบุหน้าต่างควรจะปิด อาร์กิวเมนต์สามารถเป็นได้ทั้งจำนวนหรือชื่อที่กำหนดไปยังหน้าต่างเมื่อมันถูกสร้างขึ้นโดยใช้figure(number_or_name)หรืออาจจะยกตัวอย่างเช่นตัวเลขที่ได้รับคือการใช้fig fig = figure()หากไม่มีการกำหนดอาร์กิวเมนต์close()หน้าต่างที่ใช้งานในปัจจุบันจะถูกปิด นอกจากนี้ยังมีไวยากรณ์close('all')ซึ่งปิดตัวเลขทั้งหมด
นอกจากนี้Figureคลาสยังมีวิธีสำหรับการเคลียร์ตัวเลข ฉันจะสมมติต่อไปนี้figเป็นตัวอย่างของFigure:
fig.clf()ล้างรูปทั้งหมด สายนี้เทียบเท่าได้กับplt.clf()เฉพาะในกรณีที่figเป็นตัวเลขปัจจุบัน
fig.clear() คำพ้องความหมายสำหรับ fig.clf()
โปรดทราบว่าแม้del figจะไม่ปิดหน้าต่างรูปภาพที่เกี่ยวข้อง เท่าที่ฉันรู้วิธีเดียวที่จะปิดหน้าต่างรูปใช้plt.close(fig)ตามที่อธิบายไว้ข้างต้น
clear()ฉันไม่เห็นความแตกต่างมากกับcla()เฉพาะในแกนกาฝากเท่านั้นcla()ถือว่าพิเศษ
clear()ฟังก์ชั่นในของฉันmatplotlib.pyplot(เวอร์ชั่น 1.4.2 บน MacOS) คุณช่วยพาฉันไปที่เอกสารที่เกี่ยวข้องได้ไหม
มีเพียงข้อแม้ที่ฉันค้นพบในวันนี้ หากคุณมีฟังก์ชั่นที่เรียกพล็อตหลาย ๆ ครั้งคุณควรใช้ดีกว่าplt.close(fig)แทนที่จะใช้fig.clf()วิธีแรกที่ไม่ได้สะสมในหน่วยความจำ ในระยะสั้นหากหน่วยความจำเป็นข้อกังวลใช้ plt.close (รูป) (แม้ว่าดูเหมือนว่ามีวิธีที่ดีกว่าไปที่จุดสิ้นสุดของความคิดเห็นนี้สำหรับลิงค์ที่เกี่ยวข้อง)
ดังนั้นสคริปต์ต่อไปนี้จะสร้างรายการว่าง:
for i in range(5):
fig = plot_figure()
plt.close(fig)
# This returns a list with all figure numbers available
print(plt.get_fignums())
ในขณะที่คนนี้จะสร้างรายการที่มีห้าตัวเลขอยู่ในนั้น
for i in range(5):
fig = plot_figure()
fig.clf()
# This returns a list with all figure numbers available
print(plt.get_fignums())
จากเอกสารข้างต้นไม่ชัดเจนสำหรับฉันความแตกต่างระหว่างการปิดภาพและปิดหน้าต่างคืออะไร บางทีนั่นอาจจะทำให้ชัดเจน
หากคุณต้องการลองใช้สคริปต์ที่สมบูรณ์คุณก็มี:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1000)
y = np.sin(x)
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
plt.close(fig)
print(plt.get_fignums())
for i in range(5):
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(x, y)
fig.clf()
print(plt.get_fignums())
หากหน่วยความจำเป็นปัญหาที่มีคนโพสต์แก้ไขปัญหาใน SO แล้วดู: สร้างภาพที่นับการอ้างอิง
pyplotAPI มาตรฐาน
plt.cla ()หมายถึงแกนปัจจุบันที่ชัดเจน
plt.clf ()หมายถึงตัวเลขที่ชัดเจนในปัจจุบัน
นอกจากนี้ยังมีplt.gca () (รับแกนปัจจุบัน) และplt.gcf () (รับตัวเลขปัจจุบัน)
อ่านเพิ่มเติมได้ที่นี่: Matplotlib, Pyplot, Pylab ฯลฯ : อะไรคือความแตกต่างระหว่างสิ่งเหล่านี้กับเวลาที่จะใช้แต่ละอัน?
close()เป็นคำสั่งที่ไม่เจาะจงฉันจึงไปหาวิธีระบุการปิดรูป (fig.close()ไม่ใช่ฟังก์ชัน)plt.close(fig)ไวยากรณ์ที่ถูกต้องคือ