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

منع seaborn من حفظ المخططات فوق بعضها

إياد أحمد

السؤال

قمت بإنشاء مخططين من  خلال الكود التالي:

import seaborn as sns
data = sns.load_dataset('iris')
plot1 = sns.barplot(x='sepal_length', y='species', data=data).get_figure()
plot1.savefig('plot1.pdf')
plot2 = sns.barplot(x='sepal_width', y='species', data=data).get_figure()
plot2.savefig('plot2.pdf')

 لكن المشكلة أنه يقوم بحفظ المخطط الثاني فوق المخطط الأول، لذا كيف يمكن حل هذه المشكلة؟

 

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

Recommended Posts

  • 1

يجب عليك أن تقوم بإنشاء شكل figure جديد من أجل حل المشكلة، ويمكنك القيام بذلك بإحدى الطرق التالية:
1. إنشاء شكل جديد قبل كل مخطط من خلال استدعاء الدالة plt.figure:

import seaborn as sns
data = sns.load_dataset('iris')
plt.figure()
plot1 = sns.barplot(x='sepal_length', y='species', data=data).get_figure()
plot1.savefig('plot1.pdf')
plt.figure()
plot2 = sns.barplot(x='sepal_width', y='species', data=data).get_figure()
plot2.savefig('plot2.pdf')

2. عن طريق إلغاء استدعاء الدالة get_figure ثم استدعاء plt.savefig كما يلي:

import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('iris')
plot1 = sns.barplot(x='sepal_length', y='species', data=data)
plt.savefig('plot1.pdf')
plt.clf()
plot2 = sns.barplot(x='sepal_width', y='species', data=data)
plt.savefig('plot2.pdf')

 

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

  • 1

اذا كنت تستخدم نسخة بعد 0.11 فالكود التالي قد يحل المشكلة:

import seaborn as sns
import numpy as np

data = np.random.normal(size=100)
path = "/path/to/img/plot.png"

plot = sns.displot(data) 
plot.fig.savefig(path)
plot.fig.clf() 

#أكمل رسمتك الخاصة

واذا كنت تحب التكرار فيمكنك استخدام for وذلك عوضا عن وضع كل رسمة أسفل الثانية ثم وضع الفاصل وهكذا:

import seaborn as sns
import numpy as np

for i in range(3):
  data = np.random.normal(size=100)
  path = "/path/to/img/plot2_{0:01d}.png".format(i)

  plot = sns.displot(data)
  plot.fig.savefig(path)
  plot.fig.clf() 

اما اذا كانت النسخة قبل ذلك فيجب تعديل طريقة كتابته قليلا هكذا:

import seaborn as sns
import numpy as np

data = np.random.normal(size=100)
path = "/path/to/img/plot.png"

plot = sns.distplot(data)
plot.get_figure().savefig(path)
plot.get_figure().clf() #لاحظ اختلاف شكل الدالة المستخدمه

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...