سؤال

مؤامرات التعليمات البرمجية التالية إلى اثنين بوستسكريبت (.s) الملفات، ولكن المرء الثاني يحتوي على كل من الخطوط.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(111)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.subplot(111)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

كيف يمكنني أن أقول matplotlib لبدء afresh للمؤامرة الثانية؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام figure لإنشاء مؤامرة جديدة، على سبيل المثال، أو استخدام close بعد المؤامرة الأولى.

نصائح أخرى

هناك أمر واضح من الشكل، وينبغي أن يفعل ذلك من أجلك:

plt.clf()

إذا كان لديك فرق فرعية متعددة في نفس الرقم

plt.cla()

مسح المحاور الحالية.

كما هو مذكور من ديفيد كورنابو، استخدم الشكل ().

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.figure()
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("first.ps")


plt.figure()
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

أو الفرعية (121) / فرحة فرعية (122) لنفس المؤامرة، موقف مختلف.

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

plt.subplot(121)
x = [1,10]
y = [30, 1000]
plt.loglog(x, y, basex=10, basey=10, ls="-")

plt.subplot(122)
x = [10,100]
y = [10, 10000]
plt.loglog(x, y, basex=10, basey=10, ls="-")
plt.savefig("second.ps")

فقط ادخل plt.hold(False) قبل الأول plt.plot، ويمكنك التمسك برمزك الأصلي.

إذا كنت تستخدم Matplotlib بشكل تفاعلي، على سبيل المثال في تطبيق ويب، (مثل ipython) ربما تبحث عنه

plt.show()

بدلا من plt.close() أو plt.clf().

إذا كان لا أحد منهم يعملون ثم تحقق من ذلك .. قل إذا كان لديك خواص X و Y من البيانات على طول المحور المعني. ثم تحقق من الخلية (Jupyter) التي قمت بتهيئة x و y إلى فارغة. هذا لأنه، ربما كنت تلبي البيانات إلى x و y دون إعادة تهيئة لهم. لذلك المؤامرة لديها بيانات قديمة جدا. لذلك تحقق من ذلك ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top