我尝试了不同的方法来保存我的情节,但是我尝试过的每件事都显示为空白图像,而且我目前还没有想法。有其他建议可以解决此问题吗?代码示例如下。
word_frequency = nltk.FreqDist(merged_lemmatizedTokens) #obtains frequency distribution for each token
print("\nMost frequent top-10 words: ", word_frequency.most_common(10))
word_frequency.plot(10, title='Top 10 Most Common Words in Corpus')
plt.savefig('img_top10_common.png')
答案 0 :(得分:1)
当我第一次初始化图形对象,然后调用绘图函数并最终保存图形对象时,我能够保存NLTK FreqDist绘图。
import matplotlib.pyplot as plt
from nltk.probability import FreqDist
fig = plt.figure(figsize = (10,4))
plt.gcf().subplots_adjust(bottom=0.15) # to avoid x-ticks cut-off
fdist = FreqDist(merged_lemmatizedTokens)
fdist.plot(10, cumulative=False)
plt.show()
fig.savefig('freqDist.png', bbox_inches = "tight")
答案 1 :(得分:0)
我认为您可以尝试以下操作:
plt.ion()
word_frequency.plot(10, title='Top 10 Most Common Words in Corpus')
plt.savefig('img_top10_common.png')
plt.ioff()
plt.show()
这是因为在nltk的plot
函数中,调用了plt.show()
,并且在关闭图形后,plt.savefig()
也没有活动的图形可以保存。
解决方法是打开交互模式,以使nltk函数内部的plt.show()
不会阻塞。然后,调用savefig并提供当前图形,并保存正确的图形。为了显示该图,需要再次关闭交互模式,并在外部调用plt.show()
-这次是在阻止模式下。
理想情况下,nltk
将重写其绘图功能以允许设置阻塞状态,或者不允许show
绘制并返回所创建的图形,或者将Axes
用作要绘制的输入。随时可以通过此请求与他们联系。