كيفية إعادة ترتيب الأشرطة في مخطط شريطي مكدس في ggplot2
يمكنك استخدام بناء الجملة الأساسي التالي لإعادة ترتيب موضع الأشرطة في مخطط شريطي مكدس في ggplot2:
#specify order of bars (from top to bottom) df$fill_var <- factor(df$fill_var, levels=c(' value1 ', ' value2 ', ' value3 ', ...)) #create stacked bar chart ggplot(df, aes(x=x_var, y=y_var, fill=fill_var)) + geom_bar(position=' stack ', stat=' identity ')
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: إعادة ترتيب الأشرطة في مخطط شريطي مكدس في ggplot2
لنفترض أن لدينا إطار البيانات التالي في R الذي يوضح النقاط التي سجلها لاعبو كرة السلة المختلفون:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
position=c('G', 'F', 'C', 'G', 'F', 'C', 'G', 'F', 'C'),
points=c(22, 12, 10, 30, 12, 17, 28, 23, 20))
#view data frame
df
team position points
1 AG 22
2 AF12
3 AC 10
4 BG 30
5 BF 12
6 BC 17
7 GC 28
8 CF 23
9 CC 20
إذا قمنا بإنشاء مخطط شريطي مكدس لتصور النقاط التي سجلها اللاعبون في كل فريق، فسوف يقوم ggplot2 تلقائيًا بتكديس الأشرطة بالترتيب الأبجدي:
library (ggplot2) #create stacked bar chart ggplot(df, aes(x=team, y=points, fill=position)) + geom_bar(position=' stack ', stat=' identity ')
لاحظ أن كل شريط مكدس يعرض الموضع (من الأعلى إلى الأسفل) بالترتيب الأبجدي.
لإعادة ترتيب الأشرطة بطريقة معينة، يمكننا تحويل متغير الموضع إلى عامل واستخدام وسيطة المستويات لتحديد الترتيب الذي يجب أن تكون به الأشرطة (من الأعلى إلى الأسفل) في المخطط الشريطي المكدس:
library (ggplot2) #convert 'position' to factor and specify level order df$position <- factor(df$position, levels=c(' F ', ' G ', ' C ')) #create stacked bar chart ggplot(df, aes(x=team, y=points, fill=position)) + geom_bar(position=' stack ', stat=' identity ')
أصبحت الأشرطة الآن مكدسة (من أعلى إلى أسفل) بالترتيب الدقيق الذي حددناه في وسيطة المستويات .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في ggplot2:
كيفية تدوير تسميات المحور في ggplot2
كيفية تعيين فواصل المحور في ggplot2
كيفية تعيين حدود المحور في ggplot2
كيفية تغيير تسميات الأسطورة في ggplot2