Python wordcloud 颜色按词频

标签 python keyword-argument word-cloud

我是 python 的新手,我正在使用 wordcloud pkg。

我根据字典 frequencies 中的频率生成了一个词云,key=words 和 values=frequencies of the words。

词云可以在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 中每个词的出现频率为每个词着色。我现在可以在 my_tf_color_func 中执行如下操作,给出报告 on this issue

def my_tf_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
         return "hsl(%d, 80%%, 50%%)" % (360 * frequencies[word])

但是字典 frequencies 必须被传递,我该怎么做?我必须在哪里以及如何传递字典 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/

相关文章:

python - 在 flask/gunicorn 中初始化应用程序的位置

python - Django celery 每天在特定时间运行周期性任务

python - **kwargs 的目的和用途是什么?

python - 函数参数中裸星号的目的是什么?

common-lisp - Common Lisp 中 &rest 和 &key 参数的 Lambda 列表错误

python - 在 Google-Colab 中使用 Python3 创建词云时应该如何使用 Arial 字体?

python - cx_freeze 不适用于 pyHooks

python - 将队列传递给 ThreadedHTTPServer

python - 如何打印lda主题模型和每个主题的词云

javascript - 为什么 Canvas 中的文字云很模糊?