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

تدوير Rotate تسميات المحاور labels باستخدام Seaborn في بايثون

إياد أحمد

السؤال

لدي مخطط بياني يحتوي العديد من التسميات (لكل نقطة بيانات هناك اسم) ولهذا السبب تتداخل التسميات مع بعضها البعض، لذا أريد أن يتم تدوير هذه التسميات بزاوية 90 درجة بحيث تصبح عمودية، لذا كيف يمكننا القيام بذلك؟
in.png.297d47b0fe1181fc665d1b0632bb530a.png

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

Recommended Posts

  • 1

يمكنك القيام بذلك بعدة طرق.. تابع المثال التالي:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")
iris = sns.load_dataset('iris')
ax = sns.stripplot(x='species', y='sepal_length', data=iris)
plt.title('Graph')
plt.show()

الخرج:
index.png.9e4f5956e543c67d7ad746a5f93e4e48.png
الآن لتدوير ال Labels يمكنك استخدام الدالة التالية:

ax.tick_params(axis='x', rotation=90)

بحيث الوسيط الأول هو اسم المحور المطلوب تطبيق التدوير على ملصقاته، والوسيط الثاني هو درجة التدوير.
أو من خلال كائن plt باستخدام الدالة:

plt.xticks(rotation=90) # للمحور الأفقي
plt.yticks(rotation=90) # للمحور العمودي

وبالتالي:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")
iris = sns.load_dataset('iris')
ax = sns.stripplot(x='species', y='sepal_length', data=iris)
#############
ax.tick_params(axis='x', rotation=90)
#############
plt.title('Graph')
plt.show()

الخرج:
index.png.c5b8226fed59f80820be29cf24fdc306.png

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

  • 1

بالاضافة للطرق السابقة يمكنك استخدام الدالة setp من matplot وذلك لان seaborn تقوم بارجاع المحاور بنفس صيغة matplot وبالتالي يمكن استخدامها كالتالي:

plt.setp(labels, rotation=45)

حيث تقوم باخذ عناوين المحاور مع درجة تدويرها. 

كمثال الكود التالي:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame({"Date": ['01012019','01022019','01032019','01042019',
                             '01052019','01062019','01072019','01082019'],
                   "Price": [77,76,68,70,78,79,74,75]})
df["Date"] = pd.to_datetime(df["Date"], format = "%d%m%Y")

plt.figure(figsize = (15,8))
ax = sns.barplot(x = 'Date', y = 'Price',data = df)
locs, labels = plt.xticks()
plt.setp(labels, rotation=45)

حينها تظهر الارقام السفلي بميل قيمته 45 درجة كالتالي:

61c079b7becd2_Screenshot2021-12-20143918.png.7dc8090dd4169873d860815a3c4f747d.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...