2017-03-27 26 views
0

我看到這個函數來在線生成一個詞雲,但我無法弄清楚如何改變def_random_func的顏色說如果我想要橙色,現在代碼總是產生一個綠色的字雲下面的代碼:蟒蛇中的字雲用自定義的顏色

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("rr.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() 
+0

您是否嘗試過*修改該功能以約束其生成的顏色?寫一個替代版本? – jonrsharpe

+0

不,我沒有我無法理解我應該調整哪個參數? –

回答

3

random_color_func()創造色調相同的,但不同的光度的色彩。你只需要決定你想要的色調。因此,對於橙,你可以考慮使用的21的值,例如:

def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None): 
    h = int(360.0 * 21.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) 

的色調值範圍爲0-360,您可以使用網上拾色器找到一個合適的值(嘗試谷歌搜索colour picker例如)。代碼只是從範圍0-255轉換而來,這是另一個通用標準。所以,而不是轉換,你可以只做h = 30

這將使你是這樣的:

orange wordcloud

你可以改變randint範圍,使之更亮。

+0

謝謝你了!! :-) –