يُعد تدوير تسميات علامات المحور السيني في Matplotlib مهمة شائعة عند التعامل مع تسميات طويلة أو نصوص متداخلة. تستعرض هذه المقالة عدة طرق لتحقيق تصورات واضحة وقابلة للقراءة، مع توفير مرونة لمختلف سيناريوهات الرسم البياني.
جدول المحتويات
- استخدام
plt.xticks()
- استخدام
fig.autofmt_xdate()
- استخدام
ax.set_xticklabels()
- استخدام
plt.setp()
- استخدام
ax.tick_params()
- تحسين محاذاة التسميات
استخدام plt.xticks()
هذا هو النهج الأبسط لتدوير تسميات علامات المحور السيني. تتحكم معلمة rotation
مباشرة في زاوية التدوير.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.random.rand(10)
labels = ['Very Long Label ' + str(i) for i in x]
plt.plot(x, y)
plt.xticks(x, labels, rotation=45, ha='right') # ha='right' يحاذي التسميات إلى اليمين
plt.xlabel("المحور السيني")
plt.ylabel("المحور الصادي")
plt.title("تدوير تسميات المحور السيني")
plt.tight_layout() # يمنع تداخل التسميات
plt.show()
تُعدّ وسيطة ha='right'
ضرورية للمحاذاة الصحيحة بعد التدوير. تساعد plt.tight_layout()
على منع تداخل التسميات وتحسين القراءة بشكل عام.
استخدام fig.autofmt_xdate()
مصممة خصيصًا لتسميات التواريخ، تقوم fig.autofmt_xdate()
بضبط التدوير والمحاذاة تلقائيًا لتحقيق القراءة المثلى.
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import datetime
dates = [datetime.date(2024, 1, i) for i in range(1, 11)]
values = np.random.rand(10)
fig, ax = plt.subplots()
ax.plot(dates, values)
fig.autofmt_xdate(rotation=45)
plt.show()
تبسط هذه الطريقة العملية عند العمل مع بيانات سلاسل زمنية، حيث تتعامل تلقائيًا مع تنسيق التاريخ ووضع التسميات.
استخدام ax.set_xticklabels()
توفر هذه الطريقة المزيد من التحكم، مما يسمح لك بتخصيص التسميات قبل التدوير.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.random.rand(10)
labels = ['Label ' + str(i) for i in x]
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xticklabels(labels, rotation=70)
plt.show()
استخدام plt.setp()
يوفر plt.setp()
طريقة موجزة لتعديل خصائص تسميات العلامات الموجودة، بما في ذلك التدوير.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.random.rand(10)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.setp(ax.get_xticklabels(), rotation=30)
plt.show()
استخدام ax.tick_params()
للحصول على تحكم دقيق في مختلف خصائص العلامات، بما في ذلك التدوير، فإن ax.tick_params()
هو الخيار الأكثر تنوعًا.
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.random.rand(10)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.tick_params(axis='x', labelrotation=60)
plt.show()
تحسين محاذاة التسميات
بغض النظر عن الطريقة المختارة، فإن المحاذاة الصحيحة ضرورية للقراءة. تتحكم معلمة ha
(المحاذاة الأفقية) (‘left’، ‘center’، ‘right’) داخل plt.xticks()
أو ax.set_xticklabels()
في الوضع الأُفقي. جرّب لإيجاد المحاذاة المثلى للرسم البياني الخاص بك. ضع دائمًا في اعتبارك استخدام plt.tight_layout()
لمنع تداخل التسميات.
من خلال إتقان هذه التقنيات، يمكنك إنشاء رسومات Matplotlib واضحة وغنية بالمعلومات، حتى مع تسميات المحور السيني المعقدة أو الطويلة.