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

وضع معلومات البيانات Legend خارج الرسم Plot في matplotlib | بايثون

Ali Ismael

السؤال

أريد وضع معلومات البيانات Legend خارج الرسم Plot:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine')
ax.plot(x, np.cos(x), c ='r', label ='Cosine')
ax.axis('equal')
# هنا قمنا بتعريف صندوق لتوضيح البيانات
leg = ax.legend();
# الصندوق سيكون في الزاويا العليا اليسارية

وأيضاً كيف يمكنني تغيير حجم الخط فيه؟

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

Recommended Posts

  • 1

للتحكم بذلك نستخدم الوسيطين loc  و bbox_to_anchor:

loc='best', bbox_to_anchor=(x, y)

لذا بدايةً دعنا نتعرف على الوسيط loc  الذي يأخذ القيم التالية:

Location String
'best' 				
'upper right' 			
'upper left' 			
'lower left' 			 
'lower right' 			
'right' 			
'center left' 			
'center right' 			
'lower center' 			
'upper center' 			
'center' 			

فالقيمة "best" تعني أنه سيضعه في أفضل مكان ممكن تلقائياً وهي الحالة الافتراضية. أما  "upper right" تعني أنه سيقوم بوضعه في أعلى اليمين وهكذا... أما الوسيط bbox_to_anchor فهو يستخدم لتغيير موضعه بالنسبة ل loc بحيث أن x و y هما إحداثيات الصندوق مثلاً القيمة  (0.0, 0.0)  تعني أنك تريد وضعه خارجاً عند مبدأ الإحداثيات. انظر للأمثلة التالية:
مثال1:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine')
ax.plot(x, np.cos(x), c ='r', label ='Cosine')
ax.axis('equal')
# هنا قمنا بتعريف صندوق لتوضيح البيانات
#في أسفل اليمين legend سنضع ال 
leg = ax.legend(loc ="lower right");

الخرج:
1.png.9c28556f77746a3272650ff42da8b7fb.png
مثال2: هنا سنضعه في الخارج على اليمين (أنت تتحكم بالإحداثيات-عن طريق التجريب-).

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine')
ax.plot(x, np.cos(x), c ='r', label ='Cosine')
ax.axis('equal')
# هنا قمنا بتعريف صندوق لتوضيح البيانات
# في أسفل اليمين legend سنضع ال
# وسنقوم أيضاً بوضعه في الخارج
leg = ax.legend(loc ="lower right",bbox_to_anchor =(1.3, 0.0))

الخرج:
2.png.53ce7c00ca227586157eb8a86e04ba8f.png
مثال3: سنضعه في الخارج عند مبدأ الإحداثيات:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine')
ax.plot(x, np.cos(x), c ='r', label ='Cosine')
ax.axis('equal')
leg = ax.legend(bbox_to_anchor =(0.0, 0.0))

الخرج:
3.png.544d498f1778db73076294952879208a.png
أما بالنسبة لحجم الخط فنستخدم الوسيط fontsize حيث نمرر له حجم الخط مثلاً 11 أو نوع الخط الذي تحتاجه من خلال الكلاس FontProperties أو مباشرةً من خلال ذكر اسمه كما يلي:

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine')
ax.plot(x, np.cos(x), c ='r', label ='Cosine')
ax.axis('equal')
# لتعديل الخط
from matplotlib.font_manager import FontProperties
# نقوم بتعريف الخط الذي نحتاجه
fontP = FontProperties()
fontP.set_size('xx-small') # مثلاً هنا تريد أن يكون الخط صغيراً جداً
# fontsize اللآن نمرر كائن الخط إلى الوسيط 
# leg = ax.legend(bbox_to_anchor =(0.6, -0.2), fontsize=fontP) 
# أو نقوم بتمرير نوع الخط مباشرةً كالتالي
# leg = ax.legend(bbox_to_anchor =(0.6, -0.2), fontsize='xx-small') 
# أو من خلال ذكر الحجم
leg = ax.legend(bbox_to_anchor =(0.7, -0.2), fontsize=20)

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...