الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعرف على Matplotlib

بدأه محمد سمير في 27 يونيو 2009 · 17 رد · 6,801 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله

أهتم حالياً بهذه المكتبة matplotlib و ما سأقرأه سأضع ملخصه هنا إن شاء الله.

ما هي matplotlib: هي مكتبة مكتوبة ببايثون مهمتها عمل الرسومات البيانية ذات البعدين 2D و تعتمد تلك المكتبة على NumPy للتعامل مع المصفوفات الكبيرة لضمان أداء أفضل.

Matplotlib تعتبر مشابهة لبيئة MatLab و منها إشتقت matplotlib إسمها وتستطيع مع matplotlib إستخدام الأوامر السطرية مثل MatLab كما يمكنك دمج matplotlib في برامج المبنية على البرمجة كائنية التوجه OPP.

التثبيت Installing:

بالطبع تحتاج Python (سأستخدم Python 2.6 على Windows XP)

تحتاج لتثبيت NumPy (إختر الإصدارة التي تناسبك):

http://sourceforge.net/project/showfiles.p...ckage_id=175103

ثم تثبت matplotlib (إختر الإصدارة التي تناسبك):

http://sourceforge.net/project/showfiles.p...ckage_id=278194

ألآن يمكنك إختبار تواجد NumPy و معرفة إصدارته بهذا الكود:

>>> import numpy as np
>>> np.__version__
'1.3.0'

ثم تختبر تواجد matplotlib بهذا الكود:

>>> import matplotlib as mpl
>>> mpl.__version__
'0.98.5.3'

مبروك … لديك matplotlib على حاسوبك و هي جاهزة للعمل, لنختبرها.

لنبدأ بهذا الكود:

>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
>>> plt.ylabel(’some numbers’)
>>> plt.show()

تفسير الكود:

السطر الأول لإستيراد مكتبة matplotlib و إستيراد pyplot module من داخلها.

السطر الثاني نعطي فيه الكائن plot مصفوفة لتمثيلها.

السطر الثالث نسمي فيه محور "ص".

السطر الرابع نعطي الأمر show لإظهار الرسم البياني.

و هذا هو ناتج الكود بعد التنفيذ:

post-6588-1246108765_thumb.gif

كما تلاحظ أن محور "س" بدأ ترقيمه من صفر حتى 2!

التفسير:

لقد أعطينا الكائن plot مصفوفة واحدة فقط و بطريقة تلقائية إفترض هو أنها قيم محور "ص" و تلقائياً أيضاً إفترض أن محور "س" سيتدرج بنفس الفارق بين القيم كما في "ص" لكنه سيبدأ من صفر (لأن المصفوفات في بايثون تبدأ من صفر) و بالتالي أصبحت مصفوفة المحور "س" = [0, 1, 2].

قبل أن أكمل أحب أن أعرف رأيكم في صياغة الموضوع, كما أنتظر تصحيحكم للأخطاء و شروحاتكم, بارك الله فيكم.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#2

أنا جديد على بايثون وشوي مشغول لذلك لم أتمكن من تنفيذ الكود :(

على كل الشرح جميل وفكرة جميله أن تتعلم وتعلم أول بأول وأنا سأقوم بنفس العمل مع مكتبة الصور حينما أتفرغ لها

ولكن لي سؤال ... ماهو المستفاد من هذه المكتبه ؟؟ أنا أعرف أن ماتلاب لغة خاصه لشباب الكهرباء والدوائر الكهربائيه صح؟

وشكرا لك

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3

السلام عليكم و رحمة الله

أخي bastr3: بالنسبة لمات لاب هو أكثر من برنامج للعمل مع الدوائر الإلكترونية, يمكنك كتابة مكتبات خاصة بما تريد و تسمى tool boxes و أشهر المكتبات الخاصة بمات لاب هي تلك المرتبطة ب ال signal processing و image processing و electric circuits, لكن هذا لا يمنع إستخدام مات لاب في أي مهمة مرتبطة بالتحليل العددي.

أما matplotlib فهي وحدها ليست إلا مكتبة لتمثيل الأعداد بيانياً (2D) لكنها متقدمة بحيث تسمح لك بالكثير من الإمكانات لتمثيل بياناتك, يمكنك رؤية الأمثلة هنا:

http://matplotlib.sourceforge.net/users/screenshots.html

هذا عن matplotlib وحدها, لكن إذا وضعنا هذه المكتبات التالية معاً:

matplotlib - NumPy - SciPy - VTK

سيصبح لديك واحدة من أقوى منصات البرمجة العلمية و التحليل العددي و تمثيل الأعداد بيانياً (2D and 3D).

و بإذن الله يكون هناك موضوع عما قريب يتناول NumPy بتفصيل أكثر.

أتمنى أن أكون قد وفقت في إجابة تساؤلك و أنا في إنتظار إستفساراتك أخي الكريم.

بالتوفيق.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#4
محمد سمير كتب:
السلام عليكم و رحمة الله

قبل أن أكمل أحب أن أعرف رأيكم في صياغة الموضوع, كما أنتظر تصحيحكم للأخطاء و شروحاتكم, بارك الله فيكم.

وعليكــم السـلام ورحمة الله وبركاتـه..

نعم اخي, صياغة الموضوع ممتازة بارك الله بيك

اكمل

:

موفق يارب

bye

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5

بالمناسبة ممكن تواجهو مشاكل مع easy_install فحملو السورس و ستبوها يدوى

كمل يامحمد موضوع فعلا مفتقدينه ^_^

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#6
اقتباس
tool boxes و أشهر المكتبات الخاصة بمات لاب هي تلك المرتبطة ب ال signal processing و image processing و electric circuits

ننتظر ... :)

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#7

السلام عليكم و رحمة الله

أخوتي رغد , أحمد , و bastr3 أشكر لكم إهتمامكم و حسن ظنكم و أعتذر عن التأخير لظروف العمل.

نكمل:

=========================================

بالطبع لن تستخدم رسم بياني بتمرير قيم للمحور "ص" فقط و تترك تخمين قيمة "س" لكل نقطة للدالة plot, يمكنك أن تمرر مصفوفة للمحور "س" كمتغير يلي مصفوفة محور "ص".

مثال للكود:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16])

هكذا العنصر الأول من مصفوفة "ص" مع العنصر الأول من مصفوفة "س" تمثل نقطة على الرسم البياني و العنصر الثاني مع العنصر الثاني يمثل نقطة و هكذا.

لاحظ أننا تركنا ضبط قيم المحاور لplot لكنك تستطيع أن تعطي محوري "س" و "ص" المدى و التقسيم الذي ترغب فيه عن طريق الدالة axis كما في المثال التالي:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16])
plt.axis([0, 6, 0, 20])

تفسير السطر الثالث من هذا الكود هو أن الدالة axis أخذت منك مصفوفة بأربعة عناصر, العنصران الأول و الثاني لتحديد بداية و نهاية محور "س" و العنصران الثالث و الرابع لتحديد بداية و نهاية المحور "ص" لتكون هكذا: [xmin, xmax, ymin, ymax].

إضافة بسيطة و هي أن الشكل الإفتراضي للمنحنى في matplotlib هو الخط الازرق, لكن ماذا لو أردنا تغيير النقاط على الرسم البياني لتكن مثلاً دوائر حمراء و كل دائرة حمراء تمثل نقطة على الرسم البياني, يمكنك تغيير الشكل بتمرير متغيرات شبيهة بالمستخدمة في مات لاب مثل:

'ro' حرف r يرمز للون الأحمر أما حرف o يرمز للدائرة.

'^g' حرف g يرمز للأخضر أما رمز ^ يرمز للمثلث.

'-b' حرف b للون الأزرق و رمز – يرمز للخط و هو القيمة الإفتراضية لموديول plot.

و بالطبع يمكنك عمل تباديل بين الألوان و الأشكال.

و بالتالي يكون الكود لهذا المثال كما يلي:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16], ’ro’)
plt.axis([0, 6, 0, 20])
plt.show()

لو طبقنا الكود سيكون الناتج كما بالشكل:

post-6588-1246306528_thumb.gif

ماذا لو أردنا إضافة عدد من المنحنيات على نفس الرسم البياني و بأشكال مختلفة؟

غداً إن شاء الله

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#8

يعطيك العافية ... ليش مستعجل وغدا نكمل ؟؟؟ إذا عندك شغل أجل الدرس الجاي لبعد بكرة مو مشكله :) قلتلك إني مشغول هاليومين وبدي أتابع معك :)

رح أحاول قدر الإمكان أطبق الدروس بأسرع وقت وإن شاء الله أستفيد ويستفيدوا الشباب وبارك الله بك

سؤال : جربت الحين أبلش بالدرس الأول ولما جيت بدي أثبت الملفات الي حكيت عنهم لقيت إنهم ملفات عادية !! كيف بدي أثبتهم الله يرضى عليك ؟

إذا كان لابد من وجود البايثون فياريت تشرح البرامج وتحط لينكات إلها :) مشان تسهل علينا الله يسهل عليك يارب .. وإحكيلنا وين الملفات لازم تروح بأي مجلد يعني .. لاتنسى إنو في شباب رح يبلشو معك وهمه صفر بالبايثون وكلمة صفر تعني صفر

معلش بدي أثقل عليك ... طريقة التثبيت على ويندوز وعلى لينكس مشان يكون في خيارات مرات بكون على لينكس ومرات على ويندوز :)

وشكرا لك

تم تعديل هذه المشاركة بواسطة bastr3 في 30 يونيو 2009 في 05:38

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#9

السلام عليكم و رحمة الله

أخي bastr3: لتجربة الأكواد و التعامل مع matplotlib تحتاج للآتي:

1- نسخة بايثون, بالنسبة للويندوز يمكنك تحميل النسخة 2.6.2 من هنا: http://www.python.org/ftp/python/2.6.2/python-2.6.2.msi

أما لينكس فيأتي عليه أحدث نسخ بايثون تلقائياً ( في حالتنا لن تتوافق النسخة الثالثة من بايثون مع مكتبة matplotlib لذلك نعمل مع النسخة 2.6.2).

2- مكتبة numpy و هي مكتبة للبايثون للحسابات العددية تتميز بأنها مبرمجة ب C و لذلك مفيدة جداً للحسابات الثقيلة و الطويلة كما تتميز بأمكانات أكثر في التعامل مع المصفوفات و إمكانية التكامل مع مكتبات Fortran بسهولة, مما يجعلها المكتبة الأنسب للمهتمين بالبرمجة العلمية أو البحثية إن صح اللفظ, هذه المكتبة يمكنك تحميل windows installer الخاص بها من هنا:

http://sourceforge.net/project/downloading...&a=24094519

بالطبع هذه النسخة متوافقة مع Python 2.6.

3- أخيراً مكتبتنا التي نحن بصدد شرحها هنا matplotlib يمكنك أيضاً تحميل windows installer الخاص بها من هنا:

http://sourceforge.net/project/downloading...&a=73373616

في البداية بعد تثبيت بايثون على ويندوز في قائمة البرامج في start ستجد بايثون و من ضمن برامجها محرر ظريف يدعى IDLE و هو ما سنجرب معه ألأكواد بالأعلى بعد تثبيت مكتبتي numpy و matplotlib , كما يمكنك إستخدام بايثون مع ال command line في كونسول الويندوز أو لينكس مباشرة (بايثون مثل PHP مفسرة و لذلك يمكنك مخاطبة المفسر بأوامر مباشرة).

أما بقية الخطوات على لينكس فلم أكن سأقترح غير easy_install و هو ما أوضح أحمد أن به مشكلة, لذلك يجب تثبيت هذه المكتبات من الكود المصدري (إلحقنا يا أحمد :) )

بإذن الله تكون الخطوات بسيطة و واضحة و أنا في الخدمة لو أي نقطة غير واضحة.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#10

السلام عليكــم ورحمـة الله وبركاتــه

أحب بداية أن أنبه على خطأ في الجزئية التالية:

اقتباس
يمكنك أن تمرر مصفوفة للمحور "س" كمتغير يلي مصفوفة محور "ص".

التصحيح هو أن المتغير الأول يكون ل "س" و الثاني يكون ل "ص".

و جل من لا يسهو.

نكمل بفقرة بسيطة:

======================================================

ماذا لو أردنا إضافة عدد من المنحنيات على نفس الرسم البياني و بأشكال مختلفة؟

الإجابة بسيطة .. دالة plot تسمح بتمرير العدد الذي تريد من المتغيرات لتمثيل "س" و "ص" على قدر ما تحتاج لرسم عدة منحنيات على نفس الرسم البياني, بمعنى:

plt.plot(x , y , 'shape and color as you ant' , x2 , y2 , 'another shape and color' , x3 , y3 , …..)

و بالتالي يمكنك تمرير قوائم lists ل plot كما في المثال التالي:

import numpy as np
import matplotlib.pyplot as plt
t = range(0, 55)
y = range(2, 57)
u = range(35, 90)
plt.plot(t, y, 'ro', t, u, 'b^')
plt.show()

و ينتج معك من تنفيذ هذا الكود الرسم البياني التالي:

post-6588-1246400881_thumb.png

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#11

انا جيت :D

فى اللينكس بسيطة جدا

1- حمل الملفات المصدري

2- فك الضغط

3- python setup.py build

او python setup.py build_ext -i لأكون دقيق

4- python setup.py install

ملحوظة عملية ال install ممكن تحتاج منك صلاحيات مستخدم اعلى فإستخدم sudo معاها او su

كمل ياحج محمد... شكلنا هنذاكر منهج الماتلاب تانى :D

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#12

تم التطبيق بنجاح :)

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#13

السلام عليكــم ورحمـة الله وبركاتــه

نكمل على بركة الله

هل تذكر NumPy التي إضطررنا لتثبيتها في أول الموضوع لكي نستطيع إستخدام matplotlib؟

حسنٌ .. هذا مثال آخر نستخدم فيه إمكانة من إمكانات NumPy و هي arange:

import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0,5,.2)
plt.plot(t,t ,'r--', t, t**2, 'bs' , t , t**3 , 'g^')
plt.show()

تفسير الكود كما بالسابق تمرير متغيرات "س" و "ص" إلى plot و هو سيقوم باالرسم, الجديد أننا إستخدمنا هذه المرة دالة arange ليعطينا مصفوفة تبدأ من صفر و حتى 5 كل 0.2 نقطة, ثم مررناها كمتغير ل "س" و أخذنا ثلاث نقاط ل "ص" و تربيع ص" و "تكعيب ص" , كما غيرنا شكل المنحنى مرة ك خطوط مقطعة حمراء '--r' و مرة كمربعات زرقاء 'bs' و أخيراً كمثلثات خضراء '^g'.

نقطة خارج الإطار: من مميزات مصفوفات NumPy أنك تستطيع تطبيق المعاملات الرياضية operators ( + و – و * و /) مباشرة عليها (على حد علمي لا تقبل بايثون المثال التالي مثلاً):

>>> t
array([ 0. ,  0.2,  0.4,  0.6,  0.8,  1. ,  1.2,  1.4,  1.6,  1.8,  2. ,
		2.2,  2.4,  2.6,  2.8,  3. ,  3.2,  3.4,  3.6,  3.8,  4. ,  4.2,
		4.4,  4.6,  4.8])

>>> t + 1
array([ 1. ,  1.2,  1.4,  1.6,  1.8,  2. ,  2.2,  2.4,  2.6,  2.8,  3. ,
		3.2,  3.4,  3.6,  3.8,  4. ,  4.2,  4.4,  4.6,  4.8,  5. ,  5.2,
		5.4,  5.6,  5.8])

>>> f = np.sqrt (t)
>>> f
array([ 0.		,  0.4472136 ,  0.63245553,  0.77459667,  0.89442719,
		1.		,  1.09544512,  1.18321596,  1.26491106,  1.34164079,
		1.41421356,  1.4832397 ,  1.54919334,  1.61245155,  1.67332005,
		1.73205081,  1.78885438,  1.84390889,  1.8973666 ,  1.94935887,
		2.		,  2.04939015,  2.0976177 ,  2.14476106,  2.19089023])

هل لاحظت؟ يمكنك أن تضيف إلى مصفوفة NumPy كما يمكنك أن تحصل على الجزر التربيعي لعناصر المصفوفة في NumPy.

بعد فهم المثال إليك الناتج كما يجب أن يكون:

post-6588-1246627587_thumb.png

فلنتقدم خطوة للأمام … ماذا لو أردنا إضافة رسمين بيانيين 2 plots لشكل واحد figure ؟؟؟

سهلة , سنتعامل مع الدالة figure و الدالة subplot.

عندما طبقنا الأمثلة السابقة لم نستخدم الدالتين figure و subplot لأنهما ينشئان تلقائياً عند عمل رسم بياني واحد داخل شكل واحد "one plot in one figure” لكن لأننا الآن نريد عمل

أكثر من رسم بياني واحد سنستخدم الدالتين كالتالي:

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1)			   # the first figure

plt.subplot(2,1,1)			# the first subplot in the first figure
plt.plot(range(1,15,1), 'r:')

plt.subplot(2,1,2)			# the second subplot in the first figure
plt.plot(range(5,20,2), 'g^')

plt.show()

التفسير: في السطر الثالث إستدعينا الدالة figure لتعريفها بأننا نعمل على الشكل الأول (و بالتالي لو أردنا تنشئة شكل ثاني يمكنك تمرير القيمة 2 للدالة).

السطر الرابع أخبرنا plot أننا نريد subplot داخله و موضعه المربع الأول من مربعين في الfigure المطلوب.

السطر الخامس مررنا ل plot القيمة المراد تمثيلها على subplot الأول.

السطر السادس نشئنا subplot آخر سيكون مقره المربع الثاني المجاور ل subplot الأول, لاحظ أنه مع تنشئة subplot ثاني أصبح هو الخيار المفعل لدينا بمعنى أن كل الأحداث التالية تنطبق عليه (مثلاً تمرير قيم ل plot ستظهر على subplot الثاني).

السطر السابع مررنا القيمة المراد تمثيلها على subplot الثاني ل plot.

سينتج معك التالي:

post-6588-1246628008_thumb.png

سنوضح الأمر بأمثلة أكثر غداً إن شاء الله.

أي ملاحظات؟ أي أسئلة؟ أي أخطاء يجب إصلاحها؟ انا في الخدمة :)

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#14

السلام عليكــم ورحمـة الله وبركاتــه ،،

بارك الله بك اخي محمد

شرح روعة و مجهود واضح

و بانتظار المزيد

و على مهلك طبعاً

موفق يارب

bye

:ty:

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#15

السلام عليكم و رحمة الله

أشكر لك متابعتك للموضوع أختي رغد و أعتذر عن تأخري في إكماله فقد شغلني إبني الثاني يوسف عنكم (عمره الآن أسبوعين :) ) .

بإذن الله لنا عودة للموضوع قريباً

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#16
اقتباس
فقد شغلني إبني الثاني يوسف عنكم (عمره الآن أسبوعين regular_smile.gif ) .

الف مبروك يامحمد ويتربى بعزك ياجميل :)

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#17

السلام عليكــم ورحمـة الله وبركاتــه

الله يبارك فيك يا أحمد, عقبالك يا أخي.

وجدت هذه المحاضرة (فيديو) لجون هنتر مطور مكتبة matplotlib , مدتها 47 دقيقة , إن شاء الله ستعجبكم.

http://videolectures.net/mloss08_hunter_mat/

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#18

والله اخي بايثون دائما تبهرنا

مدونة عربية مختصة في الكمبيوتر و الانترنت

http://www.mouitax.co.cc

مواضيع مشابهة