我想在python中创建一个单词云,以便每个单词都以数据源的颜色标记 说我有:
comment Data source
Hello there 1 (red)
Hello! 1 (red)
Hi there 2 (green)
im good 3 (blue)
所以基本上是所有三个注释的文字云,其中每个单词都是它的相应数据源的颜色,因此hello => red,hi => green和im,good => blue。如果有'那么颜色可能是单独的颜色(比如橙色),用于表示红色和绿色标签的单词 和其他一些颜色,让我们说紫色,如果单词出现在蓝色+红色标签中,......
我如何在python中做同样的事情?我所能做的就是使用以下代码生成一个简单的文字云:
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
wordcloud = WordCloud(
stopwords=STOPWORDS,
background_color='white',
width=1200,
height=1000
).generate(word_string)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
或者可以在tableau中执行此操作吗?
答案 0 :(得分:0)
您需要指定color_func
并将其作为关键字参数传递给Wordcloud
。颜色规格必须是有效的PIL颜色规格。
概念上简单的方式是这样的:
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
word_string = ...
def color_func(word, *args, **kwargs):
if word in ['hello']:
color = '#ff0000' # red
elif word in ['hi']:
color = '#00ff00' # green
elif word in ['im', 'good']:
color = '#0000ff' # blue
elif word in ['there']:
color = 'ffa500' # orange
else:
color = '#000000' # black
return color
wc = Wordcloud(..., color_func=color_func, ...)
wc.generate(word_string)
编写这样的函数有点单调乏味,我会定义一个将单词映射到颜色的字典,然后将其封装在一个函数中:
word_to_color = dict()
blue_words = ['im', 'good']
for word in blue_words:
word_to_color[word] = '#0000ff' # blue
# etc
def color_func(word, *args, **kwargs):
try:
color = word_to_color[word]
except KeyError:
color = = '#000000' # black
return color
在后一种情况下,您需要确保在定义color_func
之后定义word_to_color
。