【问题标题】:word cloud in python with customised random colour generationpython中带有自定义随机颜色生成的词云
【发布时间】:2017-03-27 09:54:57
【问题描述】:

我在网上看到了这个生成词云的功能,但是我无法弄清楚如何更改def_random_func 中的颜色。假设我想要橙色,现在代码总是会产生绿色的词云。代码如下:

import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS

def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
    h = int(360.0 * 45.0 / 255.0)
    s = int(100.0 * 255.0 / 255.0)
    l = int(100.0 * float(random_state.randint(60, 120)) / 255.0)

    return "hsl({}, {}%, {}%)".format(h, s, l)

file_content = open("rr.txt").read()
wordcloud = WordCloud(font_path=r'C:\Windows\Fonts\Verdana.ttf',
                      stopwords=STOPWORDS,
                      background_color='white',
                      width=1200,
                      height=1000,
                      color_func=random_color_func
                      ).generate(file_content)

plt.imshow(wordcloud)
plt.axis('off')
plt.show()

【问题讨论】:

  • 您是否尝试过修改该函数以限制它产生的颜色?编写替代版本?
  • 不,我不明白我应该调整什么参数?
  • 嗯,它将颜色限制在 H=45º、S=100%、60

标签: python colors word-cloud


【解决方案1】:

random_color_func() 正在创建相同色调但具有不同亮度的颜色。你只需要决定你想要的色调。所以对于橙色,您可以考虑使用21 的值,例如:

def random_color_func(word=None, font_size=None, position=None,  orientation=None, font_path=None, random_state=None):
    h = int(360.0 * 21.0 / 255.0)
    s = int(100.0 * 255.0 / 255.0)
    l = int(100.0 * float(random_state.randint(60, 120)) / 255.0)

    return "hsl({}, {}%, {}%)".format(h, s, l)

色相值在0-360 范围内,您可以使用在线颜色选择器找到合适的值(例如尝试谷歌搜索colour picker)。该代码只是从0-255 范围转换而来,这是另一个通用标准。因此,与其转换,您可以只创建h = 30

这会给你类似的东西:

您可以更改 randint 范围以使其更亮。

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 2018-04-02
    • 2016-07-17
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多