اعتبارات الأداء لتخطيط Matplotlib
أثناء تقييم مكتبات التخطيط المختلفة لـ Python، قد تواجه مشكلات في الأداء عند استخدام Matplotlib. تستكشف هذه المقالة سبب بطء تخطيط Matplotlib وتوفر حلولًا لتحسين سرعته.
أسباب البطء
ينبع أداء Matplotlib البطيء في المقام الأول من عاملين:
تحسين الأداء
لتعزيز الأداء، ضع في اعتبارك الاستراتيجيات التالية:
1. استخدم Blitting:
يتضمن Blitting فقط تحديث جزء معين من اللوحة القماشية بدلاً من إعادة رسم الشكل بأكمله. وهذا يقلل بشكل كبير من الحمل الحسابي. يوفر Matplotlib أساليب التقسيم الخاصة بالواجهة الخلفية والتي تختلف اعتمادًا على إطار عمل واجهة المستخدم الرسومية المستخدم.
2. تقييد إعادة الرسم:
استخدم خيار الرسوم المتحركة = True عند التخطيط. بالاشتراك مع وحدة الرسوم المتحركة Matplotlib، تسمح هذه التقنية بتحديث كائنات محددة دون التسبب في إعادة رسم اللوحة القماشية بالكامل.
3. تخصيص الحبكات الفرعية:
قلل عدد الحبكات الفرعية وتسميات التجزئة. قم بإزالة العناصر غير الضرورية لتقليل وقت العرض.
4. تعزيز كفاءة الكود:
قم بإعادة بناء الكود الخاص بك لتحسين هيكله وتقليل عدد العمليات التي يتم إجراؤها. استخدم العمليات الموجهة حيثما أمكن ذلك.
مثال:
إليك نسخة محسنة من الكود المقدم في السؤال، باستخدام النسخ مع Copy_from_bbox وrestore_region:import matplotlib.pyplot as plt
import numpy as np
import time
x = np.arange(0, 2*np.pi, 0.01)
y = np.sin(x)
fig, axes = plt.subplots(nrows=6)
fig.show() # Draw the canvas initially
styles = ['r-', 'g-', 'y-', 'm-', 'k-', 'p-']
lines = [ax.plot(x, y, style)[0] for ax, style in zip(axes, styles)]
# Store background images of the axes
backgrounds = [fig.canvas.copy_from_bbox(ax.bbox) for ax in axes]
tstart = time.time()
for i in range(1, 200):
for j, line in enumerate(lines, start=1):
# Restore the background
fig.canvas.restore_region(backgrounds[j-1])
# Update the data
line.set_ydata(sin(j*x i/10.0))
# Draw the artist and blit
ax.draw_artist(line)
fig.canvas.blit(ax.bbox)
print('FPS:', 200/(time.time()-tstart))
المكتبات البديلة
إذا ظل أداء Matplotlib غير مرضٍ، ففكر في مكتبات التخطيط البديلة مثل مثلبوكيه، مؤامرة، أو الطير. تعطي هذه المكتبات الأولوية للتفاعل في الوقت الفعلي وتحسين الأداء.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3