مبعثر Matplotlib
إنشاء مخططات مبعثرة
باستخدام Pyplot ، يمكنك استخدام scatter()
الوظيفة لرسم مخطط مبعثر.
ترسم scatter()
الدالة نقطة واحدة لكل ملاحظة. يحتاج إلى صفيفين من نفس الطول ، واحدة لقيم المحور x ، وواحدة للقيم على المحور y:
مثال
مخطط مبعثر بسيط:
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()
نتيجة:
الملاحظة في المثال أعلاه هي نتيجة مرور 13 سيارة.
يوضح المحور X عمر السيارة.
يوضح المحور Y سرعة السيارة عند مرورها.
هل هناك علاقة بين الملاحظات؟
يبدو أنه كلما كانت السيارة أحدث ، زادت سرعة قيادتها ، لكن قد يكون ذلك مصادفة ، فقد سجلنا 13 سيارة فقط.
قارن المؤامرات
في المثال أعلاه ، يبدو أن هناك علاقة بين السرعة والعمر ، ولكن ماذا لو رسمنا الملاحظات من يوم آخر أيضًا؟ هل ستخبرنا حبكة التبعثر بشيء آخر؟
مثال
ارسم قطعتين على نفس الشكل:
import matplotlib.pyplot as plt
import numpy as np
#day one, the age
and speed of 13 cars:
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)
#day two, the age and speed of 15 cars:
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)
plt.show()
نتيجة:
ملاحظة: تم رسم المخططين بلونين مختلفين ، باللونين الأزرق والبرتقالي بشكل افتراضي ، وسوف تتعلم كيفية تغيير الألوان لاحقًا في هذا الفصل.
من خلال مقارنة المؤامرات ، أعتقد أنه من الآمن أن نقول إن كلاهما يعطينا نفس النتيجة: كلما كانت السيارة أحدث ، زادت سرعتها.
الألوان
يمكنك تعيين اللون الخاص بك لكل مخطط مبعثر باستخدام
color
أو c
الوسيطة:
مثال
عيّن لونك الخاص للعلامات:
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()
نتيجة:
لون كل نقطة
يمكنك حتى تعيين لون معين لكل نقطة باستخدام مصفوفة من الألوان كقيمة
c
للوسيطة:
ملاحظة: لا يمكنك استخدام color
الوسيطة لهذا ، فقط c
الوسيطة.
مثال
عيّن لونك الخاص للعلامات:
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(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
نتيجة:
ColorMap
تحتوي وحدة Matplotlib على عدد من خرائط الألوان المتاحة.
يشبه مخطط الألوان قائمة الألوان ، حيث يكون لكل لون قيمة تتراوح من 0 إلى 100.
فيما يلي مثال على خريطة ملونة:
تسمى خريطة الألوان هذه "viridis" وكما ترى فهي تتراوح من 0 ، وهو لون أرجواني ، وحتى 100 لون أصفر.
كيفية استخدام ColorMap
يمكنك تحديد مخطط الألوان باستخدام وسيطة الكلمة الأساسية
cmap
مع قيمة مخطط الألوان ، وفي هذه الحالة 'viridis'
تكون إحدى خرائط الألوان المضمنة المتوفرة في Matplotlib.
بالإضافة إلى ذلك ، عليك إنشاء مصفوفة بقيم (من 0 إلى 100) ، قيمة واحدة لكل نقطة في مخطط التبعثر:
مثال
قم بإنشاء مصفوفة ألوان ، وحدد مخطط ألوان في مخطط التبعثر:
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.show()
نتيجة:
يمكنك تضمين خريطة الألوان في الرسم بتضمين plt.colorbar()
العبارة:
مثال
قم بتضمين مخطط الألوان الفعلي:
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()
نتيجة:
خرائط الألوان المتوفرة
يمكنك اختيار أي من خرائط الألوان المضمنة:
Name | Reverse | |||
---|---|---|---|---|
Accent | Accent_r | |||
Blues | Blues_r | |||
BrBG | BrBG_r | |||
BuGn | BuGn_r | |||
BuPu | BuPu_r | |||
CMRmap | CMRmap_r | |||
Dark2 | Dark2_r | |||
GnBu | GnBu_r | |||
Greens | Greens_r | |||
Greys | Greys_r | |||
OrRd | OrRd_r | |||
Oranges | Oranges_r | |||
PRGn | PRGn_r | |||
Paired | Paired_r | |||
Pastel1 | Pastel1_r | |||
Pastel2 | Pastel2_r | |||
PiYG | PiYG_r | |||
PuBu | PuBu_r | |||
PuBuGn | PuBuGn_r | |||
PuOr | PuOr_r | |||
PuRd | PuRd_r | |||
Purples | Purples_r | |||
RdBu | RdBu_r | |||
RdGy | RdGy_r | |||
RdPu | RdPu_r | |||
RdYlBu | RdYlBu_r | |||
RdYlGn | RdYlGn_r | |||
Reds | Reds_r | |||
Set1 | Set1_r | |||
Set2 | Set2_r | |||
Set3 | Set3_r | |||
Spectral | Spectral_r | |||
Wistia | Wistia_r | |||
YlGn | YlGn_r | |||
YlGnBu | YlGnBu_r | |||
YlOrBr | YlOrBr_r | |||
YlOrRd | YlOrRd_r | |||
afmhot | afmhot_r | |||
autumn | autumn_r | |||
binary | binary_r | |||
bone | bone_r | |||
brg | brg_r | |||
bwr | bwr_r | |||
cividis | cividis_r | |||
cool | cool_r | |||
coolwarm | coolwarm_r | |||
copper | copper_r | |||
cubehelix | cubehelix_r | |||
flag | flag_r | |||
gist_earth | gist_earth_r | |||
gist_gray | gist_gray_r | |||
gist_heat | gist_heat_r | |||
gist_ncar | gist_ncar_r | |||
gist_rainbow | gist_rainbow_r | |||
gist_stern | gist_stern_r | |||
gist_yarg | gist_yarg_r | |||
gnuplot | gnuplot_r | |||
gnuplot2 | gnuplot2_r | |||
gray | gray_r | |||
hot | hot_r | |||
hsv | hsv_r | |||
inferno | inferno_r | |||
jet | jet_r | |||
magma | magma_r | |||
nipy_spectral | nipy_spectral_r | |||
ocean | ocean_r | |||
pink | pink_r | |||
plasma | plasma_r | |||
prism | prism_r | |||
rainbow | rainbow_r | |||
seismic | seismic_r | |||
spring | spring_r | |||
summer | summer_r | |||
tab10 | tab10_r | |||
tab20 | tab20_r | |||
tab20b | tab20b_r | |||
tab20c | tab20c_r | |||
terrain | terrain_r | |||
twilight | twilight_r | |||
twilight_shifted | twilight_shifted_r | |||
viridis | viridis_r | |||
winter | winter_r |
بحجم
يمكنك تغيير حجم النقاط باستخدام
s
الوسيطة.
تمامًا مثل الألوان ، تأكد من أن مصفوفة الأحجام لها نفس طول صفيفات المحورين x و y:
مثال
اضبط الحجم الخاص بك للعلامات:
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])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes)
plt.show()
نتيجة:
ألفا
يمكنك ضبط شفافية النقاط باستخدام
alpha
الوسيطة.
تمامًا مثل الألوان ، تأكد من أن مصفوفة الأحجام لها نفس طول صفيفات المحورين x و y:
مثال
اضبط الحجم الخاص بك للعلامات:
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])
sizes =
np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])
plt.scatter(x,
y, s=sizes, alpha=0.5)
plt.show()
نتيجة:
اجمع بين حجم اللون وألفا
يمكنك دمج خريطة ملونة بأحجام مختلفة على النقاط. من الأفضل تصور ذلك إذا كانت النقاط شفافة:
مثال
أنشئ مصفوفات عشوائية بـ 100 قيمة لنقاط x ونقاط y والألوان والأحجام:
import matplotlib.pyplot as plt
import numpy as np
x =
np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100))
sizes = 10 * np.random.randint(100,
size=(100))
plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')
plt.colorbar()
plt.show()
نتيجة: