2017-02-23 70 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()