عرض ملفات BMP في Subplots باستخدام Matplotlib: إرشادات وتحسينات
في محاولتك الحالية لعرض ملفات BMP في subplots باستخدام مكتبة Matplotlib، تواجهك بعض المشكلات التي تحتاج إلى التصحيح. يبدو أن الشيفرة الحالية تحتوي على بعض الأخطاء التي تسبب في الرسومات غير الصحيحة. سأقوم بتوضيح هذه الأخطاء وتقديم تعديلات لتحقيق الهدف الذي تسعى إليه.
أولًا وقبل كل شيء، يبدو أن هناك تضارب في استخدام متغير الحلقة (i
) في السطور 11 و 13. لتجنب هذا التضارب، يمكنك تغيير اسم المتغير في الحلقة الخارجية إلى شيء آخر، مثل arch_index
:
pythonfor arch_index, arch in enumerate(bmps):
i = Image.open(arch)
iar = np.array(i)
for row in range(3):
for col in range(3):
axes[row, col].imshow(iar)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()
ثانيًا، يجب عليك استخدام imshow
بدلاً من plot
لعرض الصورة في كل subplot. تعتمد مشكلتك الرئيسية على أنك تقوم برسم البيانات (plot
) بينما تحاول عرض الصور.
ثالثًا، يجب عليك إعادة ترتيب استخدام plt.subplots_adjust
بحيث يتم ضبط الفواصل بين subplots بعد إظهار الصور، وليس قبل ذلك.
بعد تعديل الشيفرة، يجب أن يكون الكود كالتالي:
pythonimport os
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from glob import glob
bmps = glob('*trace*.bmp')
fig, axes = plt.subplots(3, 3)
for arch_index, arch in enumerate(bmps):
i = Image.open(arch)
iar = np.array(i)
for row in range(3):
for col in range(3):
axes[row, col].imshow(iar)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()
بعد تطبيق هذه التعديلات، يجب أن تتمكن من عرض ملفات BMP في subplots بشكل صحيح.
المزيد من المعلومات
عندما نلقي نظرة على الشيفرة التي قدمتها والتي تقوم بمحاولة عرض ملفات BMP في subplots باستخدام مكتبة Matplotlib، نجد أن هناك العديد من النواحي التي يمكن أن تستفيد من التوضيح والتحسين. دعونا نقوم بتوسيع النقاش لفهم بعض النقاط المهمة.
أولًا، يبدو أن الكود الحالي لا يأخذ في اعتباره حجم الصورة عند عرضها في subplots. للتأكد من أن الصور تظهر بشكل صحيح، يمكننا استخدام aspect='auto'
في imshow
للسماح بتعديل حجم الصور تلقائيًا:
pythonaxes[row, col].imshow(iar, aspect='auto')
ثانيًا، لديك خطأ في استخدام متغير الحلقة i
في السطور 8 و 10. يفضل تغيير اسم المتغير في الحلقة الداخلية لتجنب الالتباس. سنستخدم row_index
كمثال:
pythonfor row_index, arch in enumerate(bmps):
i = Image.open(arch)
iar = np.array(i)
for col in range(3):
axes[row_index, col].imshow(iar, aspect='auto')
هذا يضمن عدم تداخل المتغيرات في الحلقتين.
ثالثًا، يمكن أن يكون من المفيد إضافة عنوان لكل subplot يحمل اسم الملف لتوضيح المحتوى. يمكنك استخدام set_title
لذلك:
pythonfor row_index, arch in enumerate(bmps):
i = Image.open(arch)
iar = np.array(i)
for col in range(3):
axes[row_index, col].imshow(iar, aspect='auto')
axes[row_index, col].set_title(arch)
وبهذا يمكن للمستخدم أن يرى أسماء الملفات المقابلة لكل subplot.
باستخدام هذه التحسينات، يمكنك تحسين تجربتك في عرض ملفات BMP في subplots باستخدام مكتبة Matplotlib بطريقة أكثر وضوحًا وتنظيمًا.