একটি ফাইলের মধ্যে কীভাবে সিবর্ন প্লট সংরক্ষণ করবেন


171

আমি নিম্নলিখিত কোডটি চেষ্টা করেছিলাম ( test_seaborn.py):

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set()
df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
fig = sns_plot.get_figure()
fig.savefig("output.png")
#sns.plt.show()

তবে আমি এই ত্রুটিটি পেয়েছি:

  Traceback (most recent call last):
  File "test_searborn.py", line 11, in <module>
    fig = sns_plot.get_figure()
AttributeError: 'PairGrid' object has no attribute 'get_figure'

আমি আশা করি ফাইনালটি output.pngউপস্থিত থাকবে এবং এর মতো দেখতে:

এখানে চিত্র বর্ণনা লিখুন

আমি কীভাবে সমস্যার সমাধান করতে পারি?


1
@ টেরি ওয়াং এর উত্তর নীচে আমার জন্য কাজ করেছে - Python 2.7.12এবংseaborn 0.7.1
ক্রিশ্চিয়ান ই নুনো

1
এর জন্য ওয়ান-লাইনার seaborn 0.9:sns.regplot(x='age', y='income', data=pd.read_csv('income_data.csv')).get_figure().savefig('income_f_age.png')
আন্তন তারাসনকো

উত্তর:


129

সরান get_figureএবং ব্যবহার করুনsns_plot.savefig('output.png')

df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
sns_plot.savefig("output.png")

38
দয়া করে নোট করুন যে এটি সিবোর্নে 0.7.1 এ কাজ করে না (অন্যান্য উত্তর দেখুন)।
Guido

31
লক্ষ্য করুন যে এই উত্তর গৃহীত হলেও পুরানো। সঠিক উত্তরটি এখানে সালভাতোরের দেওয়া।
গ্যাব্রিয়েল

1
2020 এ ত্রুটি:AttributeError: 'AxesSubplot' object has no attribute 'savefig'
নাইক্সিএনেক্স

233

প্রস্তাবিত সমাধানগুলি সিউবার্ন ০.৮.১ এর সাথে সামঞ্জস্যপূর্ণ নয়

নিম্নলিখিত ত্রুটিগুলি প্রদান করা কারণ সিবর্ন ইন্টারফেস পরিবর্তিত হয়েছে:

AttributeError: 'AxesSubplot' object has no attribute 'fig'
When trying to access the figure

AttributeError: 'AxesSubplot' object has no attribute 'savefig'
when trying to use the savefig directly as a function

নিম্নলিখিত কলগুলি আপনাকে চিত্রটি অ্যাক্সেস করার অনুমতি দেয় (সমুদ্র সৈকত 0.8.1 সামঞ্জস্যপূর্ণ):

swarm_plot = sns.swarmplot(...)
fig = swarm_plot.get_figure()
fig.savefig(...) 

যেমন আগে এই উত্তরে দেখা গেছে ।

আপডেট: আমি সম্প্রতি উদাহরণস্বরূপ এর মতো একটি প্লট তৈরি করতে সমুদ্রপৃষ্ঠ থেকে পেয়ারগ্রিড অবজেক্টটি ব্যবহার করেছি । এই ক্ষেত্রে, যেহেতু গ্রিডপ্লট কোনও প্লট অবজেক্টের মতো নয়, উদাহরণস্বরূপ, sns.swarmplot, এর কোনও get_figure () ফাংশন নেই। এর মাধ্যমে সরাসরি ম্যাটপ্লটলিব চিত্রটি অ্যাক্সেস করা সম্ভব

fig = myGridPlotObject.fig

এই থ্রেডে অন্যান্য পোস্টে পূর্বে প্রস্তাবিত মত।


2
আমি উদাহরণ হিসাবে যেমন সামুদ্রিক থেকে পেয়ারগ্রিড অবজেক্টটি ব্যবহার করেছি
সালভাতোর

2
এটিই কেবল উত্তর যা পেয়ারগ্রিড এবং জয়েন্টগ্রিডের পক্ষেও কাজ করে, আমি মনে করি এটি গ্রহণ করা উচিত।
Ryszard Cetnarski

41

উপরের কয়েকটি সমাধান আমার পক্ষে কার্যকর হয়নি। .figঅ্যাট্রিবিউট পাওয়া যায়নি যখন আমি যে চেষ্টা এবং আমি ব্যবহার করতে পারেনি .savefig()সরাসরি। তবে, কাজটি কী ছিল:

sns_plot.figure.savefig("output.png")

আমি একটি নতুন পাইথন ব্যবহারকারী, সুতরাং এটি আপডেটের কারণে হয়েছে কিনা তা আমি জানি না। আমার মতো অন্য কেউ যদি একই সমস্যায় না যায় সে ক্ষেত্রে আমি এটি উল্লেখ করতে চেয়েছিলাম।


1
এই সঙ্গে আমার জন্য কাজ seaborn.swarmplot, কিন্তু জন্য seaborn.lmplotযে কাজ করবে না। সহ seaborn.lmplot, আমি sns_plot.savefig("output.png")সালভাতোরের উত্তরের মতো কাজ পেয়েছি তবে get_figure()কল করার প্রয়োজন ছাড়াই ।
ওয়েন

14

আপনার কেবল সরাসরি savefigপদ্ধতিটি ব্যবহার করতে সক্ষম হওয়া উচিত sns_plot

sns_plot.savefig("output.png")

আপনার কোডটির সাথে স্পষ্টতার জন্য আপনি যদি ম্যাটপ্ল্লিটিব চিত্রটি অ্যাক্সেস করতে চান sns_plotনা তবে আপনি সরাসরি এটির সাথে পেতে পারেন

fig = sns_plot.fig

এই ক্ষেত্রে get_figureআপনার কোড অনুমান হিসাবে কোন পদ্ধতি নেই ।


9

আমি ব্যবহার করেছি distplotএবং get_figureসাফল্যের সাথে ছবি সংরক্ষণ করতে।

sns_hist = sns.distplot(df_train['SalePrice'])
fig = sns_hist.get_figure()
fig.savefig('hist.png')

ফাংশন: আমার পরিবেশের জন্য কাজ sns.distplot()মধ্যে python 3.5.6দিয়ে seaborn 0.9.0। তদ্ব্যতীত, ফাংশনটির sns.pairplot()লাইনটির দরকার নেইget_figure()
স্কট ইয়াং

9

2019 অনুসন্ধানকারীদের জন্য কম লাইনগুলি:

import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', height=2.5)
plt.savefig('output.png')

আপডেট নোট: sizeএ পরিবর্তন করা হয়েছিল height


3

এটি আমার পক্ষে কাজ করে

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

sns.factorplot(x='holiday',data=data,kind='count',size=5,aspect=1)
plt.savefig('holiday-vs-count.png')

3

এটি কেবলমাত্র একটি ম্যাটপ্ল্লোব figureঅবজেক্ট তৈরি করা এবং তারপরে ব্যবহার সম্ভব plt.savefig(...):

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

df = sns.load_dataset('iris')
plt.figure() # Push new figure on stack
sns_plot = sns.pairplot(df, hue='species', size=2.5)
plt.savefig('output.png') # Save that figure

1

আপনি sns.figure.savefig("output.png")সমুদ্র সৈকত 0.8.1 ব্যবহার করার জন্য একটি ত্রুটি পাবেন get

পরিবর্তে ব্যবহার করুন:

import seaborn as sns

df = sns.load_dataset('iris')
sns_plot = sns.pairplot(df, hue='species', size=2.5)
sns_plot.savefig("output.png")

-4

শুধু এফওয়াইআই, নীচের কমান্ডটি সামুদ্রিক 0.8.1 তে কাজ করেছিল তাই আমি অনুমান করি যে প্রাথমিক উত্তরটি এখনও বৈধ।

sns_plot = sns.pairplot(data, hue='species', size=3)
sns_plot.savefig("output.png")

যদিও কোডটি কাজ করছে, এটি সম্পূর্ণ নয়। শিরোনামে বলা হয়েছে, 'কীভাবে একটি সিবুর্ন প্লটকে একটি ফাইলে সংরক্ষণ করতে হবে' যা আরও সাধারণ। দুর্ভাগ্যক্রমে প্রস্তাবিত সমাধান পেয়ারপ্লট নিয়ে কাজ করে তবে এটি অন্যান্য 'ধরণের' প্লটের সাথে একটি ব্যতিক্রম উত্থাপন করে। আশা করি ভবিষ্যতে প্রকাশে সমুদ্র সৈকতের প্লট থেকে 'চিত্র' অবজেক্টটি অর্জনের আরও একীভূত উপায় থাকবে।
সালভাতোর কোসেন্টিনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.