البرمجة

عرض ملفات BMP في Subplots باستخدام Matplotlib: إرشادات وتحسينات

في محاولتك الحالية لعرض ملفات BMP في subplots باستخدام مكتبة Matplotlib، تواجهك بعض المشكلات التي تحتاج إلى التصحيح. يبدو أن الشيفرة الحالية تحتوي على بعض الأخطاء التي تسبب في الرسومات غير الصحيحة. سأقوم بتوضيح هذه الأخطاء وتقديم تعديلات لتحقيق الهدف الذي تسعى إليه.

أولًا وقبل كل شيء، يبدو أن هناك تضارب في استخدام متغير الحلقة (i) في السطور 11 و 13. لتجنب هذا التضارب، يمكنك تغيير اسم المتغير في الحلقة الخارجية إلى شيء آخر، مثل arch_index:

python
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()

ثانيًا، يجب عليك استخدام imshow بدلاً من plot لعرض الصورة في كل subplot. تعتمد مشكلتك الرئيسية على أنك تقوم برسم البيانات (plot) بينما تحاول عرض الصور.

ثالثًا، يجب عليك إعادة ترتيب استخدام plt.subplots_adjust بحيث يتم ضبط الفواصل بين subplots بعد إظهار الصور، وليس قبل ذلك.

بعد تعديل الشيفرة، يجب أن يكون الكود كالتالي:

python
import 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 للسماح بتعديل حجم الصور تلقائيًا:

python
axes[row, col].imshow(iar, aspect='auto')

ثانيًا، لديك خطأ في استخدام متغير الحلقة i في السطور 8 و 10. يفضل تغيير اسم المتغير في الحلقة الداخلية لتجنب الالتباس. سنستخدم row_index كمثال:

python
for 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 لذلك:

python
for 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 بطريقة أكثر وضوحًا وتنظيمًا.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!