ম্যাটপ্লটলিব (পাইপলট) ​​সেভফিগ ফাঁকা চিত্র আউটপুট দেয়


174

আমি ম্যাটপ্ল্লোলিব ব্যবহার করে যে প্লট তৈরি করি সেগুলি সংরক্ষণ করার চেষ্টা করছি; তবে ছবিগুলি ফাঁকা সাশ্রয় করছে।

আমার কোডটি এখানে:

plt.subplot(121)
plt.imshow(dataStack, cmap=mpl.cm.bone)

plt.subplot(122)
y = copy.deepcopy(tumorStack)
y = np.ma.masked_where(y == 0, y)

plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest')

if T0 is not None:
    plt.subplot(123)
    plt.imshow(T0, cmap=mpl.cm.bone)

    #plt.subplot(124)
    #Autozoom

#else:
    #plt.subplot(124)
    #Autozoom

plt.show()
plt.draw()
plt.savefig('tessstttyyy.png', dpi=100)

এবং tessstત્તyy.png ফাঁকা (এছাড়াও .jpg দিয়ে চেষ্টা করা)

উত্তর:


286

প্রথমে কখন হয় T0 is not None? আমি এটি পরীক্ষা করব, তারপরে আমি যে মানগুলিতে যাব তা সামঞ্জস্য করব plt.subplot(); হতে পারে 131, 132, এবং 133 মানগুলি, বা যেগুলি T0বিদ্যমান বা নেই তা নির্ভর করে এমন মানগুলি চেষ্টা করে দেখুন ।

দ্বিতীয়ত, plt.show()বলা হওয়ার পরে , একটি নতুন চিত্র তৈরি করা হয়। এটি মোকাবেলা করতে, আপনি পারেন

  1. কল plt.savefig('tessstttyyy.png', dpi=100)করার আগে ফোন করুনplt.show()

  2. আপনি আগে চিত্রে সংরক্ষণ show()কল করে plt.gcf()"বর্তমান চিত্র পেতে" জন্য, তাহলে আপনি কল করতে পারেন savefig()এই Figureযে কোন সময়ে অবজেক্ট।

উদাহরণ স্বরূপ:

fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)

আপনার কোডে, 'tesssttyyy.png' ফাঁকা কারণ এটি নতুন চিত্রটি সংরক্ষণ করছে, যার কাছে কোনও কিছুই ষড়যন্ত্র করা হয়নি।


টি ২০ অংশটি সরিয়ে দিতে ভুলে গেছেন ... এটি আগে মন্তব্য করা হয়েছিল।
টাইলারথেমিলার

7
সক্ষম হওয়া jupyterসহ নোটবুকগুলিতে এর একটি বিশেষ ঘটনা ঘটে %matplotlib inline: savefigকলটি প্লট তৈরির পদ্ধতির মতো একই কক্ষে থাকতে হবে।
আইজোসেফ

3
দেখতে আকর্ষণীয় plt.show()একটি নতুন চিত্র উত্পন্ন করে। সত্যই, এটি সমস্যার সমাধান করেছে solved
ব্যবহারকারী 989762

মজার বিষয় হল, আপনি যদি plt.plot, plt.savefig, plt.show একের পর এক টার্মিনালে যেমন স্পাইডারে টাইপ করেন তবে এটি ডুমুর দেখাবে না। সমস্ত কমান্ড একটি স্ক্রিপ্টে রাখুন এবং একযোগে চালান। এটি প্লটটি দেখায়।
সিকেএম

আমার সমাধান plt.show () plt.draw () fig.set_dpi (200) fig.savefig ('/
image.png

109

plt.show() পরে আসা উচিত plt.savefig()

ব্যাখ্যা: plt.show()পুরো জিনিসটি সাফ করে, সুতরাং এর পরে নতুন খালি চিত্রটিতে কিছু ঘটবে


4
এটাই একমাত্র উপায় যা আমাকে সাহায্য করেছিল।
ইয়াউহেন

14
plt.show()পুরো জিনিসটি সাফ করে, সুতরাং এর পরে নতুন খালি চিত্রটিতে কিছু ঘটবে।
ভাগ্যদ্দীপক

2
এটাই আমার বাট বাঁচিয়েছে! : ডিআই সত্যই বুঝতে পারছেন না যে কেন একজনকে এটিকে এমনভাবে প্রয়োগ করতে হয়েছিল যাতে চিত্রটি দেখানোর পরে প্লটটি সবকিছু মুছে দেয়। করুণা ...
রোমিও সিয়েরা

12

ক্রিয়াকলাপগুলির ক্রমটি আমার জন্য সমস্যাটি স্থির করে :

  • প্রথম প্লটটি সংরক্ষণ করুন
  • তারপরে প্লটটি দেখান

নিম্নলিখিত হিসাবে:

plt.savefig('heatmap.png')

plt.show()

2

শো () এর আগে সেভফিগকে কল করা আমার পক্ষে কাজ করেছিল।

fig ,ax = plt.subplots(figsize = (4,4))
sns.barplot(x='sex', y='tip', color='g', ax=ax,data=tips)
sns.barplot(x='sex', y='tip', color='b', ax=ax,data=tips)
ax.legend(['Male','Female'], facecolor='w')

plt.savefig('figure.png')
plt.show()

1

আসুন আমি আরও বিস্তারিত উদাহরণ দেই:

import numpy as np
import matplotlib.pyplot as plt


def draw_result(lst_iter, lst_loss, lst_acc, title):
    plt.plot(lst_iter, lst_loss, '-b', label='loss')
    plt.plot(lst_iter, lst_acc, '-r', label='accuracy')

    plt.xlabel("n iteration")
    plt.legend(loc='upper left')
    plt.title(title)
    plt.savefig(title+".png")  # should before plt.show method

    plt.show()


def test_draw():
    lst_iter = range(100)
    lst_loss = [0.01 * i + 0.01 * i ** 2 for i in xrange(100)]
    # lst_loss = np.random.randn(1, 100).reshape((100, ))
    lst_acc = [0.01 * i - 0.01 * i ** 2 for i in xrange(100)]
    # lst_acc = np.random.randn(1, 100).reshape((100, ))
    draw_result(lst_iter, lst_loss, lst_acc, "sgd_method")


if __name__ == '__main__':
    test_draw()

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.