2017-02-23 52 views
0

我正尝试使用txt文件中的文本创建wordcloud。来自txt文件的Python Wordcloud

到目前为止,这是我的代码有

import matplotlib.pyplot as plt 
from wordcloud import WordCloud, STOPWORDS 


file_content=open ("tweets.txt").read() 



wordcloud = WordCloud(font_path = 'C:\Windows\Fonts\Verdana.tff', 
          stopwords=STOPWORDS, 
          background_color = 'white', 
          width=1200, 
          height=1000 
          ).generate(file_content) 

plt.imshow(wordcloud) 
plt.axis('off') 
plt.show() 

这是演出结束后我运行这段代码是错误:

File "WordCloud.py", line 14, in <module> 
    ).generate(file_content) 
    File "C:\Python27\lib\site-packages\wordcloud\wordcloud.py", line 448, in generate 
    return self.generate_from_text(text) 
    File "C:\Python27\lib\site-packages\wordcloud\wordcloud.py", line 434, in generate_from_text 
    self.generate_from_frequencies(words) 
    File "C:\Python27\lib\site-packages\wordcloud\wordcloud.py", line 317, in generate_from_frequencies 
    font = ImageFont.truetype(self.font_path, font_size) 
    File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 238, in truetype 
    return FreeTypeFont(font, size, index, encoding) 
    File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 127, in __init__ 
    self.font = core.getfont(font, size, index, encoding) 
IOError: cannot open resource 

奖金的问题:如何改变文字颜色?

+0

给我们一个'tweets.txt'文件的样本。 –

+2

我认为它应该是Verdana.ttf不是.tff – oat

+0

它抱怨缺少字体文件。 '无法打开资源' – oat

回答

1

如上所述,请将字体更改为ttf,但我建议您还使用r作为前缀,以避免任何意外的反斜杠溢出。

要添加您自己的配色方案,您需要添加颜色回调功能,例如, random_color_func。这个建立一个HSL类型的颜色随机L和固定的H和S.

import matplotlib.pyplot as plt 
from wordcloud import WordCloud, STOPWORDS 


def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None): 
    h = int(360.0 * 45.0/255.0) 
    s = int(100.0 * 255.0/255.0) 
    l = int(100.0 * float(random_state.randint(60, 120))/255.0) 

    return "hsl({}, {}%, {}%)".format(h, s, l) 

file_content=open ("tweets.txt").read() 

wordcloud = WordCloud(font_path = r'C:\Windows\Fonts\Verdana.ttf', 
          stopwords = STOPWORDS, 
          background_color = 'white', 
          width = 1200, 
          height = 1000, 
          color_func = random_color_func 
          ).generate(file_content) 

plt.imshow(wordcloud) 
plt.axis('off') 
plt.show()