Matplotlib مكتبة قوية في بايثون لإنشاء تصورات. حفظ الرسوم البيانية كملفات صور مهمة شائعة، لكن السلوك الافتراضي لعرض الرسم البياني قبل الحفظ قد يكون غير فعال. توضح هذه المقالة كيفية حفظ رسومات Matplotlib بكفاءة مباشرةً في ملفات الصور دون خطوة العرض الوسيطة.
جدول المحتويات
استخدام savefig()
لحفظ الرسوم البيانية
طريقة savefig()
هي الخيار الأكثر تنوعًا لحفظ رسومات Matplotlib. فهي توفر تحكمًا في تنسيق الملف، والدقة، وحجم الشكل. لتجنب عرض الرسم البياني، اتصل بـ savefig()
قبل أي أوامر تعرض الرسم البياني (مثل plt.show()
). تذكر إغلاق الشكل باستخدام plt.close()
لتحرير الذاكرة، خاصةً عند العمل مع العديد من الرسوم البيانية.
import matplotlib.pyplot as plt
import numpy as np
# بيانات نموذجية
x = np.linspace(0, 10, 100)
y = np.sin(x)
# إنشاء الرسم البياني
plt.plot(x, y)
plt.xlabel("محور X")
plt.ylabel("محور Y")
plt.title("موجة جيبية")
# حفظ الشكل بدون عرضه
plt.savefig("sine_wave.png", dpi=300, bbox_inches='tight') # dpi للتحكم في الدقة، bbox_inches لضمان تضمين جميع العناصر
plt.close()
يحفظ هذا الكود الرسم البياني كملف sine_wave.png
بدقة 300 نقطة في البوصة. تضمن وسيطة bbox_inches='tight'
التقاط الرسم البياني بالكامل، بما في ذلك التسميات والعناوين، في الصورة المحفوظة. يمكنك بسهولة تغيير تنسيق الملف (مثل “.pdf”، “.svg”، “.jpg”). راجع وثائق Matplotlib للحصول على قائمة كاملة بالتنسيقات المدعومة.
استخدام imsave()
لحفظ مصفوفات الصور
لحفظ مصفوفات الصور مباشرةً، توفر imsave()
نهجًا أكثر إيجازًا. هذا مفيد بشكل خاص إذا كنت قد أنشأت بالفعل بيانات صورة كمصفوفة NumPy، مما يلغي الحاجة إلى إنشاء كائن شكل Matplotlib.
import matplotlib.pyplot as plt
import numpy as np
# إنشاء مصفوفة صورة نموذجية (رمادية)
image_array = np.random.rand(256, 256)
# حفظ مصفوفة الصورة في ملف
plt.imsave("random_image.png", image_array, cmap='gray')
ينشئ هذا الكود ويحفظ صورة رمادية بحجم 256 × 256 بكسل. تحدد وسيطة cmap
مخطط الألوان؛ يستخدم هنا ‘gray’. تتوفر مخططات ألوان أخرى. imsave()
فعالة لأنها تتجاوز معالجة الأشكال.
باختصار، توفر كل من savefig()
و imsave()
طرقًا فعالة لحفظ مخرجات Matplotlib دون عرضها. يعتمد الاختيار الأمثل على ما إذا كنت تعمل مع شكل كامل أو مصفوفة صورة خام. إعطاء الأولوية لـ savefig()
قبل plt.show()
واستخدام plt.close()
يعزز الكفاءة، خاصة عند إنشاء العديد من الصور.