使用 Matplotlib 自动创建 pdf 会阻止代码执行
automated creation of pdf with Matplotlib blocks the code execution
我有一个 Python 代码,其中包含创建图形以便保存为 pdf 的功能(它在执行期间从不显示在屏幕上)。由于某种原因,该子程序的执行使图形保持打开状态并阻止了代码中的以下操作。我尝试使用 cla()、clf() 和 clear() 函数,但我无法让它工作...
子程序的局部视图如下:
def trace_pdf(a,b,c,d):
x = np.linspace(0,100,a)
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(b,c,'b', label='BA',linewidth=3.5)
ax2.set_title('a pdf like no other')
fig2.savefig('file.pdf', format='pdf')
fig2.clf()
fig2.clear()
我不明白为什么我的代码被阻止了...(我检查过如果我评论对 trace_pdf 函数的调用,一切正常)。
这就是我为解决问题所做的工作。我决定尝试 运行 我的函数作为一个独立的进程,所以我添加到我的代码中:
from multiprocessing import Process, Queue
def trace_pdf(a,b,c,d):
x = np.linspace(0,100,a)
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(b,c,'b', label='BA',linewidth=3.5)
ax2.set_title('a pdf like no other')
fig2.savefig('file.pdf', format='pdf')
plt.close()
trace_pdf = Process(target=trace_pdf, args=(a,b,c,d))
trace_pdf.start()
这样,plt_close()
调用不会影响主图形界面,因为我相信它的操作仅限于单独的进程...有关 运行 将函数作为独立的详细信息我使用的过程 this post.
我有一个 Python 代码,其中包含创建图形以便保存为 pdf 的功能(它在执行期间从不显示在屏幕上)。由于某种原因,该子程序的执行使图形保持打开状态并阻止了代码中的以下操作。我尝试使用 cla()、clf() 和 clear() 函数,但我无法让它工作...
子程序的局部视图如下:
def trace_pdf(a,b,c,d):
x = np.linspace(0,100,a)
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(b,c,'b', label='BA',linewidth=3.5)
ax2.set_title('a pdf like no other')
fig2.savefig('file.pdf', format='pdf')
fig2.clf()
fig2.clear()
我不明白为什么我的代码被阻止了...(我检查过如果我评论对 trace_pdf 函数的调用,一切正常)。
这就是我为解决问题所做的工作。我决定尝试 运行 我的函数作为一个独立的进程,所以我添加到我的代码中:
from multiprocessing import Process, Queue
def trace_pdf(a,b,c,d):
x = np.linspace(0,100,a)
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(b,c,'b', label='BA',linewidth=3.5)
ax2.set_title('a pdf like no other')
fig2.savefig('file.pdf', format='pdf')
plt.close()
trace_pdf = Process(target=trace_pdf, args=(a,b,c,d))
trace_pdf.start()
这样,plt_close()
调用不会影响主图形界面,因为我相信它的操作仅限于单独的进程...有关 运行 将函数作为独立的详细信息我使用的过程 this post.