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

السؤال

نشر

لدي ال plot التالي: 

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine', color="r",ls='solid')
plt.title('Matplotlib xticklabels Example')
plt.show()

والخرج:
index.png.f32e905227fb893a14d3219427793f4f.png لكن أريد تغيير حجم التسميات (labels) للمحور الأفقي وتدويرها، كيف يمكن القيام بذلك؟

Recommended Posts

  • 1
نشر (معدل)

لتغيير حجمها يمكنك استخدام tick_params كالتالي:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine', color="r",ls='solid')
# x تغيير حجم الخط للمحور الأفقي 
ax.tick_params(axis='x', which='major', labelsize=20)
plt.title('Matplotlib xticklabels Example')
plt.show()

والخرج:
2.png.d1df5b6536e88080fdec959933c783df.png

حيث أن axis تمثل المحاور التي نريد تطبيق التغيرات عليها ويأخذ القيم {'x', 'y', 'both'}. أما which فكما نعلم قد يكون هناك ticks أساسية وثانوية فهنا من خلال هذا الوسيط أنت تحدد فيما إذا كنت تريد تطبيق التغيرات على العلامات الريسية أم الثانوية أم كلاهما {'major', 'minor', 'both'}. والأهم labelsize الذي يحدد الحجم.
أما بالنسبة لتدوير ال tick_params  فيمكنك استخدام plt.setp التي تمنحك التحكم الكامل بعملية التدوير وبالدرجة التي تريدها من خلال الوسيط rotation كالتالي:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine', color="r",ls='solid')
# x تغيير حجم الخط للمحور الأفقي 
ax.tick_params(axis='x', which='major', labelsize=20)
# عملية التدوير
plt.setp(ax.xaxis.get_majorticklabels(), rotation=270) # تدوير 270 درجة
plt.title('Matplotlib xticklabels Example')
plt.show()

الخرج:
index.png.2e9a78bc8c4eeef25e228069f0a2c4eb.png
حيث نقوم بتمرير درجة التدوير التي نحتاجها مثلاً قمنا بتدويرها 270 درجة لجعلها عمودية، وأيضاً يجب أن نمرر ax.xaxis.get_majorticklabels كوسيط أول للدالة والتي تمثل كل ال ticklabels للمحور الأفقي.
أما إذا أردنا تطبيق ذلك على المحور y ففقط نبدل المحور الذي سيتم تطبيق التدوير عليه أي تصبح القيمة الممررة لأول وسيط في الدالة هي ax.yaxis.get_majorticklabels. أي:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine', color="r",ls='solid')
# x تغيير حجم الخط للمحور الأفقي 
ax.tick_params(axis='x', which='major', labelsize=20)
# عملية التدوير
plt.setp(ax.yaxis.get_majorticklabels(), rotation=270) # تدوير 270 درجة
plt.title('Matplotlib xticklabels Example')
plt.show()

وأخيراً إذا كان لديك ticklabels  ثانوية نمرر للوسيط الأول القيمة ax.youraxix.get_minorticklabels. أي:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 1000)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x), '--b', label ='Sine', color="r",ls='solid')
# x تغيير حجم الخط للمحور الأفقي 
ax.tick_params(axis='x', which='major', labelsize=20)
# عملية التدوير
plt.setp(ax.yaxis.get_minorticklabels(), rotation=270) # تدوير 270 درجة
plt.title('Matplotlib xticklabels Example')
plt.show()

وكذلك يمكنك تدويرها من خلال set_rotation كالتالي:

for tick in ax.get_xticklabels():
    tick.set_rotation(270)

كذلك بالنسبة للحجم:

for tick in ax.xaxis.get_major_ticks():
	tick.label.set_fontsize(20) 

 

تم التعديل في بواسطة Ali Haidar Ahmad
  • 1
نشر

يمكن تعديل خصائص التسميات على المحور x عن طريق التابع xticks الموجود داخل plt

  •  لتدوير التسميات نمرر المعامل rotation بالقيمة 90 أو -90 حسب اتجاه الدوران المراد
plt.xticks(rotation=90)
  • لتكبير حجم المسميا نمرر المعامل fontsize بقياس الخط المناسب
plt.xticks(fontsize=20)

يمكن دمن التعليمتين معا يصبح مثالك كالتالي

...
# تدوير وتكبير حجم التسميات
plt.xticks(rotation=90, fontsize=20)

plt.title('Matplotlib xticklabels Example')
plt.show()

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...