我是 python 新手,我使用 wordcloud pkg。
我根据我在字典 frequencies
中的频率生成了一个词云,键=词和值=词的频率。
wordcloud 可以在 color_funct
参数中接收一个函数。此类功能可用于为云上的文字制作您自己的颜色图。例如,我使用了 my_tf_color_func
。
wordcloud = WordCloud(background_color="white", max_words=1000, mask=motog3_coloring,
max_font_size=1000, random_state=1, relative_scaling=.6, regexp="\w[\%\-\(\)\w']+",
collocations=False, color_func=my_tf_color_func)
在
my_tf_color_func
中,我想根据属性 frequencies
中的频率为每个单词着色。鉴于报告 on this issue,我现在可以在 my_tf_color_func
中执行类似波纹管的操作def my_tf_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
return "hsl(%d, 80%%, 50%%)" % (360 * frequencies[word])
但是 dict
frequencies
必须通过,我该怎么做?我必须在哪里以及如何传递 dict frequencies
才能在 my_tf_color_func
中使用它。我尝试了一些方法,但我做不到。
非常感谢
最佳答案
您可以使用以下内容显式关闭它:
def my_tf_color_func(dictionary):
def my_tf_color_func_inner(word, font_size, position, orientation, random_state=None, **kwargs):
return "hsl(%d, 80%%, 50%%)" % (360 * dictionary[word])
return my_tf_color_func_inner
wordcloud = WordCloud(...,color_func=my_tf_color_func(frequencies))
显式有状态的类函数对象的替代方法如下:
class MyColorFunctor():
def __init__(self,frequencies):
self.frequencies = frequencies
def __call__(self,word,font_size,position,orientation,random_state=None,**kwargs):
return "hsl(%d, 80%%, 50%%)" % (360 * self.frequencies[word])
wordcloud = WordCloud(...,color_func=MyColorFunctor(frequencies))
关于Python wordcloud 按词频颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47143461/