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 แล้วดู: สร้างภาพที่นับการอ้างอิง
pyplot
API มาตรฐาน
plt.cla ()หมายถึงแกนปัจจุบันที่ชัดเจน
plt.clf ()หมายถึงตัวเลขที่ชัดเจนในปัจจุบัน
นอกจากนี้ยังมีplt.gca () (รับแกนปัจจุบัน) และplt.gcf () (รับตัวเลขปัจจุบัน)
อ่านเพิ่มเติมได้ที่นี่: Matplotlib, Pyplot, Pylab ฯลฯ : อะไรคือความแตกต่างระหว่างสิ่งเหล่านี้กับเวลาที่จะใช้แต่ละอัน?
close()
เป็นคำสั่งที่ไม่เจาะจงฉันจึงไปหาวิธีระบุการปิดรูป (fig.close()
ไม่ใช่ฟังก์ชัน)plt.close(fig)
ไวยากรณ์ที่ถูกต้องคือ