Изменить цвет шрифта сгенерированного облака слов

В настоящее время я использую эту библиотеку для создания облака слов. В настоящее время сгенерированное изображение выглядит так:  Облако слов создано

Однако я смогу распечатать это только на черно-белом принтере, поэтому цвет шрифта будет неглубоким, и я хочу изменить их на черный. К сожалению, это единственный пример, который мне удалось найти, где код читается:

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 делает в этом случае, или как изменить его, чтобы получить черный цвет.

Любые предложения приветствуются.


person Ran Wang    schedule 30.03.2017    source источник
comment
Вы знаете, что такое HSL и чем он отличается от RGB или шестнадцатеричного?   -  person Makoto    schedule 30.03.2017
comment
См. Параметр color_func в строке 220 в исходном коде строки документации для class WordCloud.   -  person martineau    schedule 30.03.2017
comment
Неа. Вот в чем вопрос. Что такое hsl?   -  person Ran Wang    schedule 31.03.2017


Ответы (2)


Это во многом связано с тем, что HSL (A) представляет на этой шкале. Поскольку и оттенок, и насыщенность установлены на ноль, яркость - это то, что управляет частью серой шкалы. То есть это конкретное случайное значение определяет шкалу серого:

random.randint(60, 100)

На практике вам нужно изменить границы этого случайного int на значение от 0 до 30 или от 0 до независимо от того, какое значение вы достаточно "темный" для работы с вашим принтером.

person Makoto    schedule 30.03.2017
comment
Спасибо. Я постараюсь. - person Ran Wang; 31.03.2017

HSL означает оттенок-насыщенность-легкость (Википедия). Вы также можете изменить значение 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 

что весело. Я использовал этот сайт, чтобы получить значения цвета hsla (и тогда я просто проигнорировал a (т.е. альфа) ценить).

Также этот странный синтаксис внизу: "hsl(203, 100%%, %50d%%)" % random.randint(60, 100), это некий форматирование строки в стиле c. То, что возвращает вызов randint (), переходит в строку в% d (или% 50d, как в моем коде. Я не уверен, почему / как, но игра с этим добавленным числом немного меняет цвета).

person TJYOM    schedule 07.05.2021