如何保存nltk FreqDist图?

时间:2018-10-20 17:31:36

标签: python pandas matplotlib nltk

我尝试了不同的方法来保存我的情节,但是我尝试过的每件事都显示为空白图像,而且我目前还没有想法。有其他建议可以解决此问题吗?代码示例如下。

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')

2 个答案:

答案 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用作要绘制的输入。随时可以通过此请求与他们联系。