Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python wordcloud颜色(按术语频率)_Python_Keyword Argument_Word Cloud - Fatal编程技术网

Python wordcloud颜色(按术语频率)

Python wordcloud颜色(按术语频率),python,keyword-argument,word-cloud,Python,Keyword Argument,Word Cloud,我是python新手,我使用wordcloud pkg 我通过dictfrequencies中的频率生成了一个单词云,关键字=单词,值=单词的频率 wordcloud可以在color\u funct参数中接收函数。这样的功能可以用来为云上的单词制作自己的颜色图。例如,我使用了my\u tf\u color\u func wordcloud = WordCloud(background_color="white", max_words=1000, mask=motog3_coloring, max

我是python新手,我使用wordcloud pkg

我通过dict
frequencies
中的频率生成了一个单词云,关键字=单词,值=单词的频率

wordcloud可以在
color\u funct
参数中接收函数。这样的功能可以用来为云上的单词制作自己的颜色图。例如,我使用了
my\u tf\u color\u 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\u tf\u color\u func
中,我想根据属性
frequencies
中每个单词的频率为其着色。我现在可以在
my_tf\u color\u func
中执行类似于以下的操作,给出报告

但是dict
频率必须通过,我该怎么做?我必须在何处以及如何传递dict
频率
,才能在
我的
中使用它

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)
我试过一些方法,但我做不到


非常感谢

您可以使用以下内容明确地关闭它:

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))

因为你不能控制函数的调用位置,我认为你不能。但只要
频率
在范围内,就没有任何东西可以阻止您使用它。您的函数不再是纯粹的,这是值得认识和考虑的,但它应该工作得很好。你可能会对函子的概念感兴趣,它本质上是一个带有状态的函数,由一个具有
\uuu call\uuu
属性的类实现。嗨@ryachza,我在我的项目中有一个
main
和一些函数,包括一个到wordcloud调用所在的wordcloud生成器函数<代码>频率
不是全局属性,它是wordlcood生成器函数中的一个属性。因此,我必须将它传递给
my\u tf\u color\u func
,以便在其中使用它。我添加了一个带有几个选项的答案,以明确地将字典和函数绑定在一起,但Python的作用域非常开放(我实际上不喜欢),因此应该可以通过多种方式获得
频率。如果没有看到更多的代码,我就不能提出建议。谢谢,我理解在另一个函数中创建函数的选项,我这样做了,它就工作了。我也不喜欢它,但这是做我想做的事情的唯一方法。谢谢。你为什么要通过dict频率?信息包含在字体大小中(至少大部分)。