Ali Ismael نشر 13 أكتوبر 2021 أرسل تقرير نشر 13 أكتوبر 2021 لدي ال 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() والخرج: لكن أريد تغيير حجم التسميات (labels) للمحور الأفقي وتدويرها، كيف يمكن القيام بذلك؟ 2 اقتباس
1 Hassan Hedr نشر 13 أكتوبر 2021 أرسل تقرير نشر 13 أكتوبر 2021 يمكن تعديل خصائص التسميات على المحور 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() اقتباس
1 Ali Haidar Ahmad نشر 13 أكتوبر 2021 أرسل تقرير نشر 13 أكتوبر 2021 (معدل) لتغيير حجمها يمكنك استخدام 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() والخرج: حيث أن 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() الخرج: حيث نقوم بتمرير درجة التدوير التي نحتاجها مثلاً قمنا بتدويرها 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) تم التعديل في 13 أكتوبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
السؤال
Ali Ismael
لدي ال plot التالي:
والخرج:
لكن أريد تغيير حجم التسميات (labels) للمحور الأفقي وتدويرها، كيف يمكن القيام بذلك؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.