كيفية إنشاء مخطط المصاصة في r


على غرار المخطط الشريطي، يعد المخطط المصاصة مفيدًا لمقارنة القيم الكمية للمتغير الفئوي. بدلاً من استخدام الأشرطة، يستخدم المخطط المصاصة خطوطًا ذات دوائر في النهاية لتمثيل القيم الكمية.

يعد المخطط المصاصة طريقة رائعة لمقارنة فئات متعددة مع تقليل كمية الألوان على المخطط وتركيز انتباه القارئ على القيم الفعلية على المخطط بدلاً من الخطوط أو الرسومات الأخرى على المخطط. يعتبر الكثير من الناس أيضًا أن لوحة المصاصة ممتعة من الناحية الجمالية.

في هذا البرنامج التعليمي، سنستعرض الخطوات اللازمة لإنشاء المخطط المصاصة التالي:

مثال: مخطط Lollipop في R

في هذا المثال، سوف نستخدم مجموعة بيانات R المضمنة في mtcars :

 #view first six rows of mtcars
head(mtcars)

مخطط المصاصة الأساسي

يوضح التعليمة البرمجية التالية كيف   لإنشاء مخطط مصاصة لمقارنة ميلا في الغالون (ميل لكل جالون) لكل سيارة من السيارات الـ 32 الموجودة في مجموعة البيانات.

يتم تعريف أسماء السيارات في أسماء صفوف مجموعة البيانات، لذلك نقوم أولاً بإنشاء عمود جديد في مجموعة البيانات يحتوي على أسماء الصفوف هذه.

بعد ذلك، نقوم بتحميل مكتبة ggplot2 ، والتي سنستخدمها لإنشاء مخطط المصاصة.

باستخدام ggplot2، نستخدم Geom_segment لإنشاء الخطوط على قطعة الأرض. قمنا بتعيين قيم البداية والنهاية x على 0 و mpg على التوالي. قمنا بتعيين قيم البداية والنهاية y كـ char :

 #create new column for car names
mtcars$car <- row.names(mtcars)

#load ggplot2 library
library(ggplot2)

#create lollipop chart
ggplot(mtcars, aes(x = mpg, y = car)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point()

إضافة التسميات

يمكننا أيضًا إضافة تسميات إلى المخطط باستخدام وسيطات label و geom_text :

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg )) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point() +
        geom_text(nudge_x = 1.5)

أو بدلاً من وضع التسميات في نهاية كل سطر، يمكننا وضعها داخل الدوائر نفسها عن طريق تكبير الدوائر وتغيير لون خط التسمية إلى الأبيض:

 ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point( size = 7 ) +
        geom_text( color = 'white', size = 2 )

قارن القيم بالمتوسط

يمكننا أيضًا استخدام مخطط المصاصة لمقارنة القيم برقم محدد. على سبيل المثال، يمكننا العثور على متوسط قيمة ميل لكل جالون في مجموعة البيانات ثم مقارنة قيمة ميل لكل جالون لكل سيارة بالمتوسط.

يستخدم التعليمة البرمجية التالية مكتبة dplyr للعثور على متوسط قيمة ميلا في الغالون ثم ترتيب السيارات بترتيب تصاعدي لكل ميل في الغالون :

 #load library dplyr
library(dplyr)

#find mean value of mpg and arrange cars in order by mpg descending
mtcars_new <- mtcars %>%
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

#view first six rows of mtcars_new
head(mtcars_new)

ثم يقوم التعليمة البرمجية التالية بإنشاء مخطط المصاصة عن طريق تعيين لون الدائرة ليكون مساويًا لقيمة العلم (في هذه الحالة TRUE أو FALSE) وقيمة x البداية لكل سيارة مساوية لمتوسط قيمة mpg .

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag )) +
        geom_segment(aes( x = mean_mpg , y = car, xend = mpg, yend = car)) +
        geom_point()

باستخدام هذا النوع من لوحة الألوان، يمكننا بسهولة تحديد السيارات التي تحتوي على ميل لكل جالون أقل وأعلى من متوسط مجموعة البيانات.

بشكل افتراضي، يستخدم R اللون الأزرق والأحمر كلوان للمخطط. ومع ذلك، يمكننا استخدام أي ألوان نريدها باستخدام الوسيطة scale_color_manual :

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
        geom_point() +
        scale_color_manual(values = c("purple", "blue"))

تغيير جماليات الرسم البياني

أخيرًا، يمكننا استخدام الإمكانات الواسعة لـ ggplot2 لإجراء مزيد من التعديل على جماليات المخطط وإنشاء منتج نهائي ذو مظهر احترافي:

 ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
        geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") +
        geom_point() +
        annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) +
        annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") +
        geom_segment(aes(x = 26.5, xend = 26.5, y = 18, yend = 14),
                     arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") +
        labs(title = "Miles per Gallon by Car") +
        theme_minimal() +
        theme(axis.title = element_blank(),
              panel.grid.minor = element_blank(),
              legend.position = "none",
              text = element_text(family = "Georgia"),
              axis.text.y = element_text(size = 8),
              plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0),
              plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)),
              plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *