الرسم البياني الشريطي والمدرج التكراري في لغة R مع مثال
⚡ ملخص ذكي
يتم إنشاء المخططات الشريطية والمدرجات التكرارية في لغة R باستخدام مكتبة ggplot2، حيث تُستخدم الدالة geom_bar() لحساب القيم الفئوية، والدالة geom_histogram() للتوزيعات المستمرة. يُتيح هذا الشرح تخصيص الألوان والمجموعات.ping، والتكديس، والتوجيه، والتصنيف، والتسميات داخل الشريط على مجموعة بيانات mtcars.

ما هو الرسم البياني الشريطي في لغة البرمجة R؟
يعد المخطط الشريطي طريقة رائعة لعرض المتغيرات الفئوية في المحور السيني. يشير هذا النوع من الرسم البياني إلى جانبين في المحور الصادي.
- يحسب الأول عدد مرات الظهور في كل مجموعة.
- يُظهر الثاني إحصائية موجزة (الحد الأدنى، والحد الأقصى، والمتوسط، وما إلى ذلك) لمتغير على المحور الصادي.
ستستخدم مجموعة بيانات mtcars، والتي تحتوي على المتغيرات التالية:
- cyl: رقم الاسطوانة في السيارة. متغير رقمي
- am: نوع ناقل الحركة. 0 للأوتوماتيكي و1 لليدوي. متغير رقمي
- ميلا في الغالون: ميلا لكل جالون. متغير رقمي
لأن الرسم البياني يبدو مشابهاً جداً، فمن المفيد تسوية الاختلاف قبل كتابة أي كود.
الرسم البياني الشريطي مقابل المدرج التكراري في لغة البرمجة R: الاختلافات الرئيسية
يبدو الرسمان البيانيان متشابهين، ويحدث بينهما خلط مستمر. فهما يجيبان على أسئلة مختلفة ويستخدمان أشكالاً هندسية مختلفة.
| المعايير | Bar Chart | الرسم البياني |
|---|---|---|
| متغير المحور السيني | فئوي أو عاملي | متصل ورقمي |
| ما يمثله الشريط | فئة واحدة | فاصل واحد، أو فئة، من القيم |
| الفجوات بين القضبان | نعم، الفئات منفصلة | لا، صناديق القمامة متجاورة |
| طلب من البار | يمكن إعادة ترتيبها بحرية | محدد بواسطة المقياس العددي |
| تمت الإجابة على السؤال | كيف تتم مقارنة المجموعات؟ | كيف يتم توزيع متغير واحد؟ |
| كائن ggplot2 | geom_bar () | geom_histogram() |
القاعدة العامة: إذا كان إعادة ترتيب الأعمدة لا يزال منطقيًا، فلديك مخطط أعمدة. أما إذا كان إعادة ترتيبها يُفقدها معناها، فلديك مدرج تكراري. وللحصول على ملخصات مبنية على الأرباع لنفس المتغير المستمر، استخدم مربع مؤامرة.
كيفية إنشاء مخطط شريطي في لغة البرمجة R
لإنشاء رسم بياني في Rيمكنك استخدام مكتبة ggplot التي تقوم بإنشاء رسوم بيانية جاهزة للنشر. بناء الجملة الأساسي لهذه المكتبة هو:
ggplot(data, mapping = aes()) + geometric object arguments: data: dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common objects are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
يركز هذا البرنامج التعليمي على الكائن الهندسي geom_bar()، الذي يرسم مخطط الشريط، وعلى geom_histogram() للبيانات المستمرة.
الرسم البياني الشريطي: العد
يوضح الرسم البياني الأول تردد الأسطوانة باستخدام Geom_bar(). الكود أدناه هو بناء الجملة الأساسي.
library(ggplot2) # Most basic bar chart ggplot(mtcars, aes(x = factor(cyl))) + geom_bar()
Code تفسير
- يمكنك تمرير مجموعة البيانات mtcars إلى ggplot.
- داخل وسيطة aes()، تقوم بتعيين المحور السيني إلى متغير العامل cyl
- تعني علامة + أنك تريد من R الاستمرار في قراءة الكود. وهذا يجعل الكود أكثر قابلية للقراءة عن طريق كسره.
- استخدم Geom_bar() للكائن الهندسي.
الإخراج:
ملاحظات:تأكد من تحويل المتغيرات إلى عامل وإلا فإن R يعامل المتغيرات كأرقام. راجع المثال أدناه.
تخصيص الرسم البياني
يمكن تمرير أربع وسائط لتخصيص الرسم البياني:
- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar
تغيير لون الأشرطة
يمكنك تغيير لون الأشرطة. لاحظ أن ألوان الأشرطة كلها متشابهة.
# Change the color of the bars ggplot(mtcars, aes(x = factor(cyl))) + geom_bar(fill = "coral") + theme_classic()
Code تفسير
- يتم التحكم في ألوان الأشرطة بواسطة خريطة aes()ping داخل الشكل الهندسي (أي ليس في دالة ggplot()). يمكنك تغيير اللون باستخدام وسيطات التعبئة. هنا، اختر لون المرجان.
الإخراج:
يمكنك استخدام هذا الرمز:
grDevices::colors()
لرؤية جميع الألوان المتوفرة في R. هناك حوالي 650 لونًا.
تغيير الشدة
يمكنك زيادة أو تقليل شدة لون الأشرطة
# Change intensity ggplot(mtcars, aes(factor(cyl))) + geom_bar(fill = "coral", alpha = 0.5) + theme_classic()
Code تفسير
- لزيادة أو تقليل شدة الشريط، يمكنك تغيير قيمة ألفا. قيمة ألفا الكبيرة تزيد الشدة، والقيمة المنخفضة تقللها. تتراوح قيمة ألفا بين 0 و1. عند 1، يتطابق اللون تمامًا مع لوحة الألوان؛ وعند 0، يكون الشريط غير مرئي. هنا، اخترنا ألفا = 0.5.
الإخراج:
اللون حسب المجموعات
يمكنك تغيير ألوان الأشرطة، أي لون واحد مختلف لكل مجموعة. على سبيل المثال، يحتوي متغير cyl على ثلاثة مستويات، ثم يمكنك رسم المخطط الشريطي بثلاثة ألوان.
# Color by group ggplot(mtcars, aes(factor(cyl), fill = factor(cyl))) + geom_bar()
Code تفسير
- تُغيّر الوسيطة fill داخل الدالة aes() لون الشريط. يمكنك تغيير اللون بتعيين fill = متغير المحور السيني. في مثالك، متغير المحور السيني هو cyl؛ fill = factor(cyl)
الإخراج:
إضافة مجموعة في الأشرطة
يمكنك تقسيم المحور y بشكل أكبر استنادًا إلى مستوى عامل آخر. على سبيل المثال، يمكنك حساب عدد ناقل الحركة الأوتوماتيكي واليدوي استنادًا إلى نوع الأسطوانة.
سوف تتصرف على النحو التالي:
- الخطوة 1: إنشاء إطار البيانات باستخدام مجموعة بيانات mtcars
- الخطوة 2: قم بتسمية المتغير am بـ auto لناقل الحركة الأوتوماتيكي وman لناقل الحركة اليدوي. قم بتحويل am وcyl كعامل حتى لا تحتاج إلى استخدام factor() في دالة ggplot().
- الخطوة 3: ارسم مخططًا شريطيًا لحساب عدد ناقل الحركة حسب الأسطوانة
library(dplyr) # Step 1 data <- mtcars %>% #Step 2 mutate(am = factor(am, labels = c("auto", "man")), cyl = factor(cyl))
بعد تجهيز مجموعة البيانات، يمكنك رسم الرسم البياني:
# الخطوة 3
ggplot(data, aes(x = cyl, fill = am)) + geom_bar() + theme_classic()
Code تفسير
- يستقبل استدعاء ggplot() مجموعة البيانات data وخريطة aes()ping.
- في aes() قمت بتضمين المتغير x-axis والمتغير المطلوب لملء الشريط (أي am)
- Geom_bar (): إنشاء المخطط الشريطي
الإخراج:
الخريطةping سيتم ملء الشريط بلونين، لون لكل مستوى. من السهل تغيير المجموعة باختيار متغيرات عاملية أخرى في مجموعة البيانات.
الرسم البياني الشريطي بالنسبة المئوية
يمكنك تصور الشريط بالنسبة المئوية بدلاً من العدد الأولي.
# الرسم البياني الشريطي بالنسبة المئوية
ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = "fill") + theme_classic()
Code تفسير
- استخدم الموضع = "ملء" في الوسيطة Geom_bar() لإنشاء رسم بنسبة مئوية في المحور y.
الإخراج:
جنبا إلى جنب القضبان
من السهل رسم المخطط الشريطي مع متغير المجموعة جنبًا إلى جنب.
# Bar chart side by side ggplot(data, aes(x = cyl, fill = am)) + geom_bar(position = position_dodge()) + theme_classic()
Code تفسير
- Position=position_dodge(): يوضح بوضوح كيفية ترتيب الأشرطة
الإخراج:
رسم بياني شريطي مع إحصائيات موجزة
في الجزء الثاني من الدرس، يحمل المحور الصادي قيمة محسوبة بدلاً من عدد. لاحظ أن هذا لا يزال رسمًا بيانيًا شريطيًا: سيتم شرح الرسم البياني التكراري الحقيقي لاحقًا، وهو يستخدم شكلًا هندسيًا مختلفًا.
هدفك هو إنشاء رسم بياني يوضح متوسط الميل لكل جالون لكل نوع من الأسطوانات. لرسم رسم بياني إعلامي، ستتبع الخطوات التالية:
- الخطوة 1: قم بإنشاء متغير جديد بمتوسط ميل لكل جالون لكل أسطوانة
- الخطوة 2: إنشاء الرسم البياني الأساسي
- الخطوة 3: تغيير الاتجاه
- الخطوة 4: تغيير اللون
- الخطوة 5: تغيير الحجم
- الخطوة 6: إضافة تسميات إلى الرسم البياني
الخطوة 1) قم بإنشاء متغير جديد
يمكنك إنشاء إطار بيانات يسمى data_histogram والذي يقوم ببساطة بإرجاع متوسط الأميال لكل جالون من خلال عدد الأسطوانات في السيارة. يمكنك استدعاء هذا المتغير الجديدmean_mpg، وتقريب المتوسط برقمين عشريين.
# الخطوة 1
data_histogram <- mtcars %>% mutate(cyl = factor(cyl)) %>% group_by(cyl) %>% summarize(mean_mpg = round(mean(mpg), 2))
الخطوة 2) قم بإنشاء رسم بياني أساسي
يمكنك رسم المدرج التكراري. إنه ليس مصقولاً بما يكفي لتقديمه للعميل، ولكنه يُظهر الاتجاه بالفعل.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity")
Code تفسير
- لدى aes() الآن متغيرين. يشير متغير cyl إلى المحور x، وmean_mpg هو المحور y.
- تُمرر القيمة stat = "identity" لكي تستخدم الدالة geom_bar() متغير المحور الصادي كما هو بدلاً من عدّ الصفوف. القيمة الافتراضية للدالة geom_bar() هي stat = "count".
الإخراج:
الخطوة 3) تغيير الاتجاه
يمكنك تغيير اتجاه الرسم البياني من العمودي إلى الأفقي.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) + geom_bar(stat = "identity") + coord_flip()
Code تفسير
- يمكنك التحكم في اتجاه الرسم البياني باستخدام coord_flip().
الإخراج:
الخطوة 4) غيّر اللون
يمكنك التمييز بين ألوان الأشرطة وفقًا لمستوى العامل لمتغير المحور السيني.
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + coord_flip() + theme_classic()
Code تفسير
- يمكنك رسم الرسم البياني حسب المجموعات باستخدام الأمر fill= cyl mappingيتولى برنامج R تلقائيًا معالجة الألوان بناءً على مستويات متغير cyl
الإخراج:
الخطوة 5) قم بتغيير الحجم
لجعل الرسم البياني يبدو أجمل، يمكنك تقليل عرض الشريط.
graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity", width = 0.5) + coord_flip() + theme_classic()
Code تفسير
- يتحكم الوسيط width داخل الدالة geom_bar() في سُمك الشريط. كلما زادت قيمته، زاد عرضه.
- يتم تخزين الرسم البياني في مخطط الكائن، لأن الخطوة التالية تعيد استخدامه دون تغيير. ويحافظ تخزين الرسومات البيانية الوسيطة على سهولة قراءة الكود.
الإخراج:
الخطوة 6) إضافة تسميات إلى الرسم البياني
تضيف الخطوة الأخيرة قيمة mean_mpg كعلامة داخل كل شريط.
graph +
geom_text(aes(label = mean_mpg),
hjust = 1.5,
color = "white",
size = 3) +
theme_classic()
Code تفسير
- الدالة Geom_text() مفيدة للتحكم في جمالية النص.
- التسمية =: إضافة تسمية داخل الأشرطة
- mean_mpg: استخدم المتغير mean_mpg للتسمية
- يتحكم hjust في موضع التسمية على طول الشريط. القيم القريبة من 1 تضعها قرب نهاية الشريط، بينما تدفعها القيم الأكبر نحو المحور. إذا كان اتجاه الرسم البياني عموديًا، فغيّر hjust إلى vjust.
- اللون = ”أبيض“: تغيير لون النص. هنا تستخدم اللون الأبيض.
- الحجم = 3: ضبط حجم النص.
الإخراج:
كيفية ترتيب وتسمية الأعمدة في مخطط الأعمدة في لغة R
هناك لمستان أخيرتان تفصلان الرسم البياني الأولي عن الرسم البياني القابل للنشر: فرز الأعمدة حسب القيمة وتسمية المحاور بشكل صحيح.
إعادة ترتيب الأشرطة. يرتب ggplot2 مستويات العوامل أبجديًا افتراضيًا، وهو ترتيب نادرًا ما يكون الأكثر فائدة. ضع المتغير x داخل دالة reorder() لترتيبه حسب متغير ثانٍ.
# Sort the bars from lowest to highest mean_mpg ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) + geom_bar(stat = "identity", fill = "coral") + theme_classic()
قم بإضافة علامة ناقص إلى متغير الفرز، reorder(cyl, -mean_mpg)، لعكس الاتجاه.
إضافة العناوين وتسميات المحاور. تقوم الدالة labs() بتعيين كل عنصر نصي في استدعاء واحد:
ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) + geom_bar(stat = "identity") + labs(title = "Average fuel economy by cylinder count", subtitle = "mtcars dataset", x = "Number of cylinders", y = "Mean miles per gallon", fill = "Cylinders", caption = "Source: mtcars") + theme_classic()
قم بتعيين fill = NULL داخل labs() لإسقاط عنوان وسيلة الإيضاح بالكامل، واستخدم theme(legend.position = “none”) لإزالة وسيلة الإيضاح عندما يقوم المحور السيني بالفعل بتسمية المجموعات.
اختيار ألوانك الخاصة. استبدل لوحة الألوان الافتراضية بلوحة ألوان محددة بحيث يتوافق الرسم البياني مع أسلوب علامتك التجارية:
scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))
كيفية إنشاء مدرج تكراري في لغة R باستخدام الدالة geom_histogram()
يُظهر الرسم البياني كيفية توزيع متغير مستمر واحد. بدلاً من عدّ الفئات، يقوم ggplot2 بتقسيم النطاق العددي إلى فئات ويحسب عدد المشاهدات التي تقع في كل فئة.
library(ggplot2) # Most basic histogram ggplot(mtcars, aes(x = mpg)) + geom_histogram()
يعرض برنامج R رسالة توصي باختيار عدد خانات أفضل، لأن القيمة الافتراضية البالغة 30 خانة هي قيمة عشوائية. ويتحكم وسيطان في هذا الأمر:
- صناديق: عدد الفترات التي سيتم تقسيم النطاق إليها.
- عرض النطاق: عرض كل فاصل زمني، معبراً عنه بوحدات المتغير. استخدم هذا الخيار عندما تكون الوحدات ذات دلالة.
# Set the number of bins ggplot(mtcars, aes(x = mpg)) + geom_histogram(bins = 10, fill = "coral", color = "white") + theme_classic() # Or set the width of each bin instead ggplot(mtcars, aes(x = mpg)) + geom_histogram(binwidth = 4, fill = "coral", color = "white") + theme_classic()
يُعدّ تقسيم البيانات إلى فئات أهمّ خيار في الرسم البياني التكراري. فقلة الفئات تُخفي بنية البيانات الحقيقية، مثل وجود قمة ثانية؛ بينما كثرة الفئات تُحوّل الرسم البياني إلى ضوضاء. جرّب عدّة قيم قبل اختيار قيمة واحدة.
مقارنة المجموعات. قم بتعيين عامل لملء البيانات وحدد موضعها بحيث تظل التوزيعات قابلة للقراءة:
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) + geom_histogram(bins = 10, position = "identity", alpha = 0.5) + theme_classic()
عند استخدام "التطابق" مع قيمة ألفا منخفضة، تتداخل المدرجات التكرارية، مما يسمح بمقارنة الأشكال مباشرةً. استخدم "التظليل" إذا كنت تفضل رؤية الفئات جنبًا إلى جنب.
الكثافة بدلاً من العدد. عندما تختلف المجموعات في الحجم، ارسم الكثافة بحيث تكون المساحات قابلة للمقارنة، ثم قم بتراكب منحنى مُنعم:
ggplot(mtcars, aes(x = mpg)) + geom_histogram(aes(y = after_stat(density)), bins = 10, fill = "coral", alpha = 0.6) + geom_density(color = "steelblue", linewidth = 1) + theme_classic()
الرسم البياني الشريطي والمدرج التكراري في لغة البرمجة R: Code الرقم المرجعي
يُناسب الرسم البياني الشريطي محورًا س فئويًا، حيث يُمثل المحور ص إما عددًا أو إحصائية موجزة. يُبين الجدول أدناه استدعاء ggplot2 لكل متغير تم تناوله أعلاه:
| الهدف | Code |
|---|---|
| العد التنازلي |
ggplot(df, aes(x = factor(x1))) + geom_bar() |
| العد بألوان مختلفة من التعبئة |
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar() |
| العد مع مجموعات، مكدسة |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar() |
| العد مع المجموعات، جنبا إلى جنب |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge()) |
| العد مع المجموعات، مكدسة بنسبة % |
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill") |
| القيم (إحصائيات موجزة) |
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity") |
| المدرج التكراري لمتغير مستمر |
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30) |













