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

السؤال

نشر

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

Recommended Posts

  • 1
نشر

في مكتبة Matplotlib يمكنك استخدام ال bar blot للقيام بكل ما تحتاجه. فكما نعلم أن المخطط الشريطي (Bar chart) هو رسم بياني يمثل فئة البيانات ذات الأشرطة المستطيلة ذات الأطوال والارتفاعات التي تتناسب مع القيم التي تمثلها. ويمكن رسم مخططات الشريط أفقياً أو رأسياً. ويصف المخطط الشريطي المقارنات بين الفئات المنفصلة. حيث تمثل أحد محاور المخطط الفئات المحددة التي تتم مقارنتها، بينما يمثل المحور الآخر القيم المقاسة المقابلة لتلك الفئات. 

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, data=None, **kwargs)

حيث أن الوسيط الأول يمثل إحداثيات x للأشرطة (قيم المحور الأفقي -الفئات-). أما الوسيط الثاني فيمثل ارتفاع كل فئة (ارتفاع الأشرطة bars). أما الوسيط الثالث فيمثل عرضها، والرابع يمثل أدنى قيمة في المحور العمودي (مثلاً لو وضعت 10 ستبدأ قيم المحور العمودي من ال10) والرابع يأخذ قيمتين إما center أو edge ويحدد محاذاة الشريط bar. وهناك وسطاء يمكنك أن تقوم بإضافتهم مثل اللون color ولون الحدود للأشرطة edgecolor و linewidth لتغيير عرضه و tick_label في حال أردت وضع أسماء محددة للفئات أو القيم.
مثال1: فيما يلي مثال بسيط على مخطط شريط Matplotlib. يوضح عدد الطلاب المسجلين في الدورات المختلفة المقدمة من أكاديمية حسوب:

import matplotlib.pyplot as plt
import numpy as np
# الفئات
x = np.array(["CS", "UI", "JavaScript", "PHP"])
# ارتفاعها أو تكرارها أو سمها حسب نوع بياناتك
y = np.array([307, 466, 674, 539])
# bar تمرير القيم للدالة 
plt.bar(x,y)
# عرض النتائج
plt.show()

الخرج:
index.png.3ce13e0d483bad59f84f6c4ec733f24c.png
مثال2: نفس المثال السابق لكن بشكل احترافي أكثر.

import pandas as pd
from matplotlib import pyplot as plt
# البيانات نفسها
name = ["CS", "UI", "JavaScript", "PHP"]
freq = [307, 466, 674, 539]
# اعديل حجم الشكل
fig, ax = plt.subplots(figsize =(10, 9))
# تعريف مخطط شريطي معكوس
ax.barh(name, price,color="m")
# حذف حدود الشكل
for s in ['top', 'bottom', 'left', 'right']:
	ax.spines[s].set_visible(False)
# ticks حذف علامات المحاور  
ax.xaxis.set_ticks_position('none')
ax.yaxis.set_ticks_position('none')
# إضافة مسافة بين اسماء الفئات والمحور
ax.xaxis.set_tick_params(pad = 5)
ax.yaxis.set_tick_params(pad = 10)
# إضافة شبكة للخلفية
ax.grid(b = True, color ='grey',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.2)
# إضافة تعليقات على الأشرطة
for i in ax.patches:
	plt.text(i.get_width()+0.2, i.get_y()+0.5,
			str(round((i.get_width()), 2)),
			fontsize = 10, fontweight ='bold',
			color ='grey')
# عنوان المخطط
ax.set_title('Classes at Hsoub Academy',
			loc ='left', )
fig.text(0.9, 0.15, 'Jeeteshgavande30', fontsize = 12,
		color ='grey', ha ='right', va ='bottom',
		alpha = 0.7)
# عرض الرسم
plt.show()

الخرج:
3.png.c7969a993e3e6728a69db338180cab9c.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...