كيفية تسمية القيم المتطرفة في boxplots في ggplot2
يوفر هذا البرنامج التعليمي مثالاً خطوة بخطوة حول كيفية تسمية القيم المتطرفة في boxplots في ggplot2.
الخطوة 1: إنشاء إطار البيانات
أولاً، لنقم بإنشاء إطار البيانات التالي الذي يحتوي على معلومات حول النقاط التي سجلها 60 لاعبًا مختلفًا لكرة السلة في ثلاثة فرق مختلفة:
#make this example reproducible
set. seeds (1)
#create data frame
df <- data. frame (team=rep(c('A', 'B', 'C'), each= 20 ),
player=rep(LETTERS[1:20], times= 3 ),
points=round(rnorm(n=60, mean=30, sd=10), 2))
#view head of data frame
head(df)
team player points
1 AA 23.74
2AB 31.84
3 AC 21.64
4AD 45.95
5 AE 33.30
6 FY 21.80
ملاحظة : استخدمنا الدالةset.seed() للتأكد من أن هذا المثال قابل للتكرار.
الخطوة 2: تحديد وظيفة لتحديد القيم المتطرفة
في ggplot2، يتم تعريف الملاحظة على أنها حالة متطرفة إذا استوفت أحد الشرطين التاليين:
- الملاحظة هي 1.5 مرة النطاق الربيعي تحت الربع الأول (Q1)
- الملاحظة هي 1.5 مرة النطاق الربيعي فوق الربع الثالث (Q3).
يمكننا إنشاء الوظيفة التالية في R لتصنيف الملاحظات على أنها قيم متطرفة إذا استوفت أحد هذين المتطلبين:
find_outlier <- function (x) {
return (x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x))
}
ذات صلة: كيفية تفسير المدى الربيعي
الخطوة 3: قم بتسمية القيم المتطرفة في boxplots في ggplot2
ثم يمكننا استخدام الكود التالي لتسمية القيم المتطرفة في boxplots في ggplot2:
library (ggplot2)
library (dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), points, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 )
لاحظ أنه تم تسمية قيمتين متطرفتين في الرسم البياني.
الأول هو لاعب من الفريق “أ” الذي سجل 7.85 نقطة والغريب الآخر هو لاعب من الفريق “ب” الذي سجل 10.11 نقطة.
لاحظ أنه يمكننا أيضًا استخدام متغير مختلف لتسمية هذه القيم المتطرفة.
على سبيل المثال، يمكننا تبديل نقاط اللاعب في الدالة mutate() لتسمية القيم المتطرفة بناءً على اسم اللاعب:
library (ggplot2)
library (dplyr)
#add new column to data frame that indicates if each observation is an outlier
df <- df %>%
group_by(team) %>%
mutate(outlier = ifelse(find_outlier(points), player, NA))
#create box plot of points by team and label outliers
ggplot(df, aes(x=team, y=points)) +
geom_boxplot() +
geom_text(aes(label=outlier), na. rm = TRUE , hjust= -.5 )
أصبحت القيمة المتطرفة للفريق “أ” الآن تحمل علامة N ، والقيمة المتطرفة للفريق “ب” تحمل الآن علامة ” د” ، حيث تمثل هذه أسماء اللاعبين الذين لديهم قيم متطرفة للنقاط.
ملاحظة : يتم استخدام الوسيطة hjust في Geom_text() لدفع التسمية أفقيًا إلى اليمين بحيث لا تتداخل مع نقطة الرسم.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في ggplot2:
كيفية تغيير حجم الخط في ggplot2
كيفية إزالة وسيلة إيضاح في ggplot2
كيفية تدوير تسميات المحور في ggplot2