اذهب إلى المحتوى
  • 0

رسم نقاط البيانات باستخدام الدالة Scatter في Matplotlib

Ali Ismael

السؤال

Recommended Posts

  • 1

نعم يمكنك استخدام الدالة Scatter في Matplotlib لعرض وتمثيل نقاط البيانات. فيما يلي سأشرح كيف يمكنك استخدامه لتمثيل نقاط البيانات:

matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None,
                          marker=None, cmap=None,alpha=None,
                          linewidths=None, edgecolors=None)

يتم استخدام الدالة plot من الموديول pyplot لرسم نقاط البيانات. بشكل أساسي تأخذ هذه الدالة وسيطين الأول يمثل المحور الأفقي x-axis والثاني يمثل المحور العمودي y-axis،  ويمكن أن تكون قيمهما ممثلة ضمن array أو list أو tuble . على سبيل المثال إذا كانت نقاط المحور الأفقي هي الأعداد ممثلة في القائمة التالية xp ونقاط المحور العمودي هي الأعداد من 15 إلى 22 والممثلة في yp، يمكننا رسم نقاط البيانات هذه بالشكل التالي:

import matplotlib.pyplot as plt
xp = [3,4,5,2,7,4,3,1] #بحيث تتضمن القيم tuble تعريف مصفوفة أو قائمة أو 
yp = [15,16,17,18,19,20,21,22]
plt.scatter(xp, yp)
plt.show()

1.png.aaf760c2f5098d58841740978382c8a7.png
وكذلك يمكنك تمثيل أكثر من plot ضمن نفس ال figure:

import matplotlib.pyplot as plt
import numpy as np
x = np.array([4,5,8,7,2])
y = np.array([22,20,58,33,11])
plt.scatter(x, y)
x = np.array([1,3,6,7,15,8,12])
y = np.array([13,66,44,42,36,62,44])
plt.scatter(x, y)
plt.show()

index.png.367494c7d6547e93351f788bb7cace3a.png
كذلك يمكنك تغيير حجم نقاط البيانات من خلال الوسيط s (ويمكن أن تمرر له قيمة float لتغيير الحجم أو يمكنك تمرير مصفوفة حجمها بحجم نقاط البيانات لديك في حال أردت أن تجعل نقاط بيانات محددة تظهر بشكل أكبر | أصغر من غيرها). أما الوسيط c فلتحديد لون تسلسل الألوان لنقاط البيانات. أما الوسيط linewidths فلتحديد حجم محيط النقطة، و edgecolor لتحديد لون حدودها. أما alpha لتحديد شفافية النقطة (قيمة بين 0 (شفاف) و 1 (بدون شفافية)). والوسيط marker  لتحديد الشكل الذي تظهر به نقطة البيانات وافتراضياً يكون دائرة "o" ويمكنك اختيار أشكل أخرى مثل مثلث "^" أو "+" إلخ.. أما cmap فهي لتحديد خريطة الألوان.
أنظر للمثال التالي:

import matplotlib.pyplot as plt
# مجموعة البيانات الأولى
x1 = [89, 43, 36, 36, 95, 10,
	66, 34, 38, 20]
y1 = [21, 46, 3, 35, 67, 95,
	53, 72, 58, 10]
plt.scatter(x1, y1, c ="black",  # لون النقطة
			linewidths = 1,  # عرض الحدود
			marker ="*",  # شكل النقطة
			edgecolor ="y", # لون الحدود
			s = 150) # حجم النقطة
# الثانية
x2 = [26, 29, 48, 64, 6, 5,
	36, 66, 72, 40]
y2 = [26, 34, 90, 33, 38,
	20, 56, 2, 47, 15]
plt.scatter(x2, y2, c ="blue", # لون النقطة
			linewidths = 3, # عرض الحدود
			marker ="^", # شكل النقطة
			edgecolor ="red", # لون الحدود
			s = 150)#حجمها
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

3.png.36b7ae9beb3b89faac7cabb8a3a2c62b.png
قد ترغب أيضاً في الاطلاع على الدالة plot:

وتختلف scatter عن هذه الدالة في أنها تقوم بتمثيل البيانات نقطيَاً أي بدون خطوط تصل بين هذه النقاط  وبما أنك تريد رؤية توزع البيانات لديك فأنت تحتاج Scatter.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

تعتبر دالة scatter احدى أسهل وأهم دوال الرسم، وتوجد في matplot كالتالي:

matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None,
                          marker=None, cmap=None,alpha=None,
                          linewidths=None, edgecolors=None)

وأكثر ما يهمنا في استخدامها هما المعامل الأول الذي يمثل محور السينات x_axis والمعامل الثاني والذي يمثل محور الصادات y_axis، سأقوم بتوضيح بعض ما يمكن للدالة أن تفعله.

أولا الرسم البسيط كالتالي:
 

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])

plt.scatter(x, y)
plt.show()

وتقوم برسم النقاط بلون موحد كالتالي:

img_matplotlib_scatter.png.e0471f1149413ae75c929ea859ab50a3.png

كذلك يمكنك رسم أكثر من دالة للمقارنة بينهم باألوان مختلفة مع تحديد اللون الذي تريد كالتالي:
 

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')

plt.show()

616161bc50ace_.png.68e0debc2488dd2a5a945ea065a797bc.png

أو استخدام ال heatmap لتمثيل كل نقطة بقيمة كالتالي:

import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar()

plt.show()

img_matplotlib_scatter_colormap2.png.1cd86d1bb92940e7e2c8b6bddb23462a.png

والكثير من المميزات الأخرى.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...