我是一名新手,正在使用wordcloud包学习Python。
我已经通过一个字典frequencies
,其中键为单词,值为单词出现的频率,生成了一个词云。
词云可以在color_func
参数中接收一个函数。这个函数可以用来创建自己的单词云颜色映射。例如,我使用了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
中进行以下操作: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
中使用它。
我尝试了一些方法但是没有成功。
谢谢
frequencies
在作用域内,没有任何阻止您使用它所定义的方式。您的函数不再是纯函数,这值得认识和考虑,但它应该可以正常工作。您可能会对functor的概念感兴趣,它们本质上是带有状态的函数,由具有__call__
属性的类实现。 - ryachzamain
和一些函数,包括一个用于生成词云的函数,其中词云调用在其中。frequencies
不是全局属性,而是在词云生成器函数内的属性。因此,我必须将它传递给my_tf_color_func
以便能够在其中使用它。 - Nielsen Rechia