我目前正在使用this library来生成文字云。目前,生成的图片如下所示:
但是,我只能使用黑白打印机将其打印出来,因此字体颜色会变浅,我想将它们更改为黑色。不幸的是,this是我能找到的唯一例子,代码如下:
def grey_color_func(word, font_size, position, orientation, random_state=None,**kwargs):
return "hsl(0, 0%%, %d%%)" % random.randint(60, 100)
wc = WordCloud(max_words=1000, mask=mask, stopwords=stopwords, margin=10,random_state=1).generate(text)
# store default colored image
default_colors = wc.to_array()
plt.title("Custom colors")
plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3),
interpolation="bilinear")
我不知道grey_color_func
在这种情况下做了什么,或者如何更改它以生成黑色。
欢迎任何建议。
答案 0 :(得分:0)
这与link here在此范围内所代表的内容有很大关系。由于色调和饱和度都设置为零,因此亮度控制灰度部分。也就是说,这个特定的随机值决定了灰度:
random.randint(60, 100)
实际上,您需要将此随机int的边界更改为介于0到30之间或0到HSL(A)之间的值,以便与打印机配合使用。
答案 1 :(得分:0)
HSL 表示色相饱和度亮度 (Wikipedia)。您还可以更改返回的字符串中的 h(即色调)值以获得不同的颜色:
def grey_color_func(word, font_size, position, orientation, random_state=None,
**kwargs):
return "hsl(203, 100%%, %50d%%)" % random.randint(60, 100)
# hsla(282, 100%, 50%, 1) PINK
# hsla(203, 100%, 50%, 1) BLUE
这很有趣。我使用 this 站点来获取 hsla 颜色值,(然后我只是忽略了 a(即 alpha)值)。
还有底部奇怪的语法:"hsl(203, 100%%, %50d%%)" % random.randint(60, 100)
,是一些 c 风格的 string formatting。 randint() 调用返回的内容进入 %d 处的字符串(或我的代码中的 %50d。我不确定为什么/如何,但使用该前置数字会稍微改变颜色)。>