Bob*_*obo 22 python matplotlib word-cloud
我正在使用带有一些txt文件的文字云.如果我想1)增加分辨率和2)删除空边框,我该如何更改此示例.
#!/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()
Run Code Online (Sandbox Code Playgroud)
mfi*_*tzp 52
您无法提高图像的分辨率,plt.show()因为这是由您的屏幕决定的,但您可以增加尺寸.这使它可以缩放,缩放等而不会模糊.为此,将尺寸传递给WordCloud例如
wordcloud = WordCloud(width=800, height=400).generate(text)
Run Code Online (Sandbox Code Playgroud)
但是,这只是决定了创建的图像的大小WordCloud.使用matplotlib它时,它会缩放到绘图画布的大小,这是(默认情况下)大约800x600,你再次失去质量.要解决此问题,您需要在调用之前指定图形的大小imshow,例如
plt.figure( figsize=(20,10) )
plt.imshow(wordcloud)
Run Code Online (Sandbox Code Playgroud)
通过这样做,我可以成功创建一个2000x1000高分辨率的文字云.
对于你的第二个问题(删除边框),我们首先可以将边框设置为黑色,因此不太明显,例如
plt.figure( figsize=(20,10), facecolor='k' )
Run Code Online (Sandbox Code Playgroud)
您也可以使用缩小边框的大小tight_layout,例如
plt.tight_layout(pad=0)
Run Code Online (Sandbox Code Playgroud)
最终代码:
# 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()
Run Code Online (Sandbox Code Playgroud)
通过使用以下内容替换最后两行,您可以获得如下所示的最终输出:
plt.savefig('wordcloud.png', facecolor='k', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

小智 5
如果您尝试使用图像作为蒙版,请确保使用大图像以获得更好的图像质量。我花了几个小时才弄清楚这一点。
这是我使用的代码片段的示例
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")
Run Code Online (Sandbox Code Playgroud)