Python wordcloud 按词频颜色

Nie*_*hia 4 python keyword-argument word-cloud

我是 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)
Run Code Online (Sandbox Code Playgroud)

my_tf_color_func我想根据属性中的频率为每个单词着色frequenciesmy_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])
Run Code Online (Sandbox Code Playgroud)

但是字典frequencies必须通过,我该怎么做?我必须在哪里以及如何传递 dictfrequencies才能在my_tf_color_func.

我尝试了一些方法,但我做不到。

非常感谢

rya*_*hza 5

您可以使用以下内容显式关闭它:

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))
Run Code Online (Sandbox Code Playgroud)

显式有状态的类函数对象的替代方法如下:

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))
Run Code Online (Sandbox Code Playgroud)