מה זה בוקס מגרש?
עלילת Box היא דרך לדמיין את התפלגות הנתונים באמצעות תיבה וכמה קווים אנכיים. זה ידוע בתור עלילת שפם. ניתן להפיץ את הנתונים בין חמישה טווחי מפתח, שהם כדלקמן:
כאן IQR מייצג את טווח בין רבעוני שמתחיל מהרבעון הראשון (Q1) ומסתיים ברבעון השלישי (Q3).
הדמיית עלילת תיבה
בעלילת הקופסה, אותן נקודות שנמצאות מחוץ לטווח נקראות חריגים. אנו יכולים ליצור את עלילת הקופסה של הנתונים כדי לקבוע את הדברים הבאים:
- מספר החריגים במערך נתונים
- האם הנתונים מוטים או לא
- טווח הנתונים
טווח הנתונים ממינימום למקסימום נקרא מגבלת שפם. ב-Python, נשתמש במודול pyplot של מודול matplotlib, שיש לו פונקציה מובנית בשם boxplot() שיכולה ליצור את עלילת התיבה של כל מערך נתונים.
תחביר:
matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none)
בפונקציה boxplot() יש לנו הרבה תכונות שניתן להשתמש בהן כדי ליצור עלילת קופסה אטרקטיבית ומדהימה יותר של מערך הנתונים.
דוגמה1:
ניצור את מערך הנתונים האקראי של מערך ה-numpy וניצור את תרשים התיבה.
import matplotlib.pyplot as plt import numpy as np np.random.seed(15) dataSet = np.random.normal(100, 25, 200) print(dataSet) figure = plt.figure(figsize =(10, 8)) plt.boxplot(dataSet) plt.show()
תְפוּקָה:
הֶסבֵּר:
בקוד שלמעלה, קודם כל, ייבאנו את ספריות numpy ו-matplotlib בקוד. לאחר מכן יצרנו את מערך הנתונים האקראי ושרטטנו את עלילת התיבה באמצעות הפונקציה boxplot() .
דוגמה 2:
אנו יכולים ליצור מספר חלקות קופסה בו זמנית באותו קובץ.
import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_axes([0, 0, 1, 1]) bp = ax.boxplot(dataSet) plt.show()
תְפוּקָה:
הֶסבֵּר:
בקוד לעיל, יש לנו ארבעה ערכות נתונים המשתמשות בשיטות אקראיות של numpy. לאחר מכן יצרנו את הרשימה של ארבעת מערכי הנתונים והשתמשנו בפונקציה בתוך boxplot() זו.
דוגמה 3:
אנו יכולים להשתמש בכמה תכונות של הפונקציה boxplot() כדי להתאים אישית את העלילה.
import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_subplot(111) bp = ax.boxplot(dataSet, patch_artist = True,notch ='True', vert = 0) colors = ['#00FF00','#0F00FF', '#F00FF0','#FFFF0F'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) for whisker in bp['whiskers']: whisker.set(color ='#8E008B',linewidth = 1.4,linestyle =':') for cap in bp['caps']: cap.set(color ='#8E008B',linewidth = 2.1) for median in bp['medians']: median.set(color ='blue',linewidth = 3) for flier in bp['fliers']: flier.set(marker ='D',color ='#d7298c',alpha = 0.6) ax.set_yticklabels(['dataSet1', 'dataSet2','dataSet3', 'dataSet4']) plt.title('Customized box plot using attributes') ax.get_xaxis().tick_bottom() ax.get_yaxis().tick_left() plt.show()
תְפוּקָה:
הֶסבֵּר:
בקוד לעיל, יצרנו את ארבעת מערכי הנתונים באמצעות פונקציות אקראיות והגדרנו אותם ברשימה. כעת קבענו את הצבעים השונים עבור כל חלקת קופסה באמצעות רשימת הצבעים ושימוש בפונקציה set_facecolor().
קבענו את רוחב הקו של כל חלקת קופסה וקבענו גם את התוויות לכל חלקת קופסה. הגדרנו את התכונה vert =0, כלומר כל העלילות יהיו במצב אופקי.