gpt4 book ai didi

python-2.7 - 当在外部函数中创建绘图时,在 jupyter 中显示 matplotlib 图内联

转载 作者:行者123 更新时间:2023-12-03 19:39:12 26 4
gpt4 key购买 nike

我正在运行推理算法,并希望在每次迭代后显示似然函数。但是,绘图功能是我正在导入的包的一部分。我已经设法将它拼凑在一起,以便在外部 gui 窗口中使用 tkAgg 后端显示该图,但是有没有办法让它显示为内联图?这是我现在使用的:
最小的工作示例
Jupyter 代码

%matplotlib inline
#import matplotlib
#matplotlib.use('tkAgg')
import matplotlib.pyplot as plt
import sys
import numpy as np
sys.path.append('/path/to/file')
#______________________________________________________________

import testclass
a = testclass.test()
a.iterator()
如下所示,这应该迭代地绘制一系列点,一次用一个点更新绘图。当我在线运行它时,我只有在它完成运行后才能得到完整的情节。
类(class)代码
import numpy as np
import matplotlib
matplotlib.use('tkAgg')

import matplotlib.pyplot as plt
import time

class test(object):

def __init__(self):

self.x = np.random.randint(0,50,size=5)

def iterator(self):

for i in range(5):

self.plotter(i)
st = time.time()
while (time.time()-st)<2:
pass


def plotter(self,i):
if not hasattr(self,'fig'):
self.fig = plt.figure()
else:
plt.close(self.fig)
self.fig = plt.figure()

#plt.ion()

self.fig.gca().plot(self.x[:i],'o')

self.fig.show()

原始代码
笔记本代码
import matplotlib
matplotlib.use('tkAgg')

import mypackage

class_instance = mypackage.myclass()

myclass.fit(n_iterations=100)
绘图函数是类的绑定(bind)方法,由 fit 方法调用。
绘图函数函数
def update_plot(self,r,LLst,kkk):
if not hasattr(self,'LL_fig'):
self.LL_fig = plt.figure()
else:
plt.close(self.LL_fig)
self.LL_fig = plt.figure()
#plt.ion()
#self.LL_fig.clf()
ax = self.LL_fig.gca()
ax.plot(LLst[1:],linestyle='-',marker='.')
#plt.gca().set_xlim([0,np.max([50,kkk])])
ax.set_xlim([0,np.max([50,kkk])])
ax.set_xlabel('EM iter')
ax.set_ylabel('$\mathcal{L}( \\theta )$')

seaborn.despine(trim=True,offset=15)
#plt.draw()
self.LL_fig.show()
#display.clear_output(wait=True)
#display.display(plt.gcf())

sys.stdout.write("\riter: %s || LL: %s || message: %s" %(kkk,np.round(LLst[-1],decimals=2), r['status']))
sys.stdout.flush()
此外,如果我不每次都关闭并“重新初始化”图形,那么情节就会开始空白。任何帮助将非常感激!
编辑:
如果我尝试使用 matplotlib inline 而不是 tkAgg 后端,则会收到以下警告消息:
UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure
"matplotlib is currently using a non-GUI backend, "

最佳答案

使用细胞魔法%matplotlib inline (如果你不熟悉细胞魔法,只需将它放在你的一个细胞中的一条线上)

关于python-2.7 - 当在外部函数中创建绘图时,在 jupyter 中显示 matplotlib 图内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42390796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com