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

السؤال

نشر

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

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...