اذهب إلى المحتوى
  • 0

رسم مخططات boxplot ضمن subplots باستخدام seaborn في بايثون

إياد أحمد

السؤال

لدي إطار بيانات dataframe يمكنني أن أقوم برسمه من خلال boxplot بشكل طبيعي كما يلي:

import pandas as pd
import seaborn as sns
%pylab inline
df = pd.DataFrame({'Alpha' :['one','one','two','two','one','two','one','one','one','two'], 
                   'Beta': [1,2,1,2,1,2,1,2,1,1], 
                   'Gama': [1,2,3,4,6,1,2,3,4,6]})
sns.boxplot( data=df,y="Beta", x="Alpha")

لكن لا أعرف كيف يمكن أن أرسم subplot لكل المتغيرات؟ أي أريد رسم أكثر من مخطط وأريد وضع كل منها ضمن subplot..

 

تم التعديل في بواسطة إياد أحمد
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يمكنك القيام بذلك بالشكل النالي:

import seaborn as sns
import pandas as pd
%pylab inline
df = pd.DataFrame({'Alpha' :['one','one','two','two','one','two','one','one','one','two'], 
                   'Beta': [1,2,1,2,1,2,1,2,1,1], 
                   'Gama': [1,2,3,4,6,1,2,3,4,6]})
# بالعدد الذي نريده subplots نقوم بتعريف شكل مع 
f, axes = plt.subplots(1, 2) # axes[1] والثاني axes[0] هنا قمنا بتعريف اثنين الأول هو 
# subplot حيث أن المحاور عبارة عن مصفوفة مع كل 
# نريده subplot  الآن نضع كل مخطط ضمن
# ax وذلك من خلال الوسيط 
sns.boxplot(  y="Beta", x= "Alpha", data=df,  orient='v' , ax=axes[0]) # المخطط الأول
sns.boxplot(  y="Gama", x= "Alpha", data=df,  orient='v' , ax=axes[1]) # المخطط الثاني
# وهكذا..

الخرج:
index.png.9d00617c524fbf3bfb0647e62cf30c26.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

بجانب الحل السابق يمكنك كذلك استخدام حلقة تكرارية بسيطة وذلك عوضا عن كتابة كل سطر لكل رسمة بشكل مفصل ، المثال التالي يوضح ذلك:

import numpy as np

# البيانات المراد رسمها
df = pd.DataFrame({'a' :['one','one','two','two','one','two','one','one','one','two'], 
                   'b': np.random.randint(1,8,10), 
                   'c': np.random.randint(1,8,10),
                   'd': np.random.randint(1,8,10),
                   'e': np.random.randint(1,8,10)})

names = df.columns.drop('a')
ncols = len(names)
fig, axes = plt.subplots(1,ncols)

#حلقة تكرارية للرسم
for name, ax in zip(names, axes.flatten()):
    sns.boxplot(y=name, x= "a", data=df, orient='v', ax=ax)
    
plt.tight_layout()

ويكون الناتج كالتالي:

SirNi.png.e49c4468bcbd575a38bb2e7189814d4f.png

لاحظ اننا هنا ثبتنا اسماء الرسومات كلها، لكنك يمكنك تحديد اسم أو رقم لكل رسمة بحيث يكون مميزا لها كذلك.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...