使用word-cloud提高分辨率并删除空边框

时间:2015-02-28 20:31:24

标签: python matplotlib word-cloud

我正在使用word cloud和一些txt文件。如果我想1)增加分辨率和2)删除空边框,如何更改this example

#!/usr/bin/env python2
"""
Minimal Example
===============
Generating a square wordcloud from the US constitution using default arguments.
"""

from os import path
import matplotlib.pyplot as plt
from wordcloud import WordCloud

d = path.dirname(__file__)

# Read the whole text.
text = open(path.join(d, 'constitution.txt')).read()
wordcloud = WordCloud().generate(text)
# Open a plot of the generated image.
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

4 个答案:

答案 0 :(得分:42)

您无法在plt.show()中增加图像的分辨率,因为这是由您的屏幕决定的,但您可以增加尺寸。这使它可以缩放,缩放等而不会模糊。为此,请将尺寸传递给WordCloud,例如

wordcloud = WordCloud(width=800, height=400).generate(text)

但是,这只会决定WordCloud创建的图像的大小。当您使用matplotlib显示它时,它会缩放到绘图画布的大小,这是(默认情况下)大约800x600,您再次失去质量。要解决此问题,您需要在调用imshow之前指定数字的大小,例如

plt.figure( figsize=(20,10) )
plt.imshow(wordcloud)

通过这样做,我可以成功创建一个2000x1000高分辨率的文字云。

对于你的第二个问题(删除边框),我们首先可以将边框设置为黑色,因此不太明显,例如。

plt.figure( figsize=(20,10), facecolor='k' )

您还可以使用tight_layout缩小边框的大小,例如

plt.tight_layout(pad=0)

最终代码:

# Read the whole text.
text = open(path.join(d, 'constitution.txt')).read()
wordcloud = WordCloud(width=1600, height=800).generate(text)
# Open a plot of the generated image.

plt.figure( figsize=(20,10), facecolor='k')
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

通过用以下内容替换最后两行,您可以得到如下所示的最终输出:

plt.savefig('wordcloud.png', facecolor='k', bbox_inches='tight')

final Constitution wordcloud

答案 1 :(得分:1)

如果您尝试使用图像作为遮罩,请确保使用大图像以获得更好的图像质量。

以下是我使用的代码段的示例

mask = np.array(Image.open('path_to_your_image'))
image_colors = ImageColorGenerator(mask)
wordcloud = WordCloud(width=1600, height=800, background_color="rgba(255, 255, 255, 0)", mask=mask
                     ,color_func = image_colors).generate_from_frequencies(x)

# Display the generated image:
plt.figure( figsize=(20,10) )
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")

答案 2 :(得分:0)

这很简单,plt.tight_layout(pad=0)可以完成工作,减少背景空间,消除多余的填充。

答案 3 :(得分:-2)

模糊的wordclouds - 我一直在努力解决这个问题。对于我的使用,我发现在最常见的单词出现和出现次数少的单词之间的差异太大,使得较低计数的单词不可读。当我缩放更频繁的计数以减少差异时,所有低频词都更具可读性。