首页 > 编程知识 正文

Python词云设置字体颜色

时间:2023-11-19 18:16:59 阅读:287542 作者:FMMT

在Python的matplotlib库中有一个叫WordCloud的工具可以生成词云图。生成的词云图的字体颜色默认是黑色,但是你可以指定字体颜色,并且通过某些技巧可以使生成的词云图更有创意。本文将从多个方面对Python词云设置字体颜色进行详细阐述,让读者掌握词云图的多样化生成方法。

一、通过color_func参数设置字体颜色

在WordCloud的构造函数中可以使用color_func参数来指定词云图中字体的颜色。该参数需要传入一个函数,该函数需要返回一个颜色值,可以是字符串类型的颜色名称,也可以是RGB三元组。

from wordcloud import WordCloud
import numpy as np
from PIL import Image
import random

# 定义返回值为字体颜色的函数
def random_color(word, font_size, position, orientation, random_state=None, **kwargs):
    # 随机返回RGB三元组颜色值
    return "rgb({0},{1},{2})".format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

# 构建WordCloud对象,并指定color_func参数
wc = WordCloud(mask=np.array(Image.open("heart.png")), background_color="white", max_words=2000, font_path="msyh.ttf", color_func=random_color)

# 设置文本
text = "Python is great and easy to learn. It's really fun to program with Python. Python is amazing!"

# 生成词云图
wc.generate(text)

# 保存词云图
wc.to_file("color_func.png")

在上面的代码中,我定义了一个返回RGB三元组颜色值的函数,随机生成颜色,每个单词的颜色都不一样。生成的词云图如下:

二、通过mask参数制作形状化词云图

WordCloud的mask参数可以用于指定词云图的形状。也就是说,你可以制作任何形状的词云图,并将其与color_func参数组合起来设置字体颜色。

from wordcloud import WordCloud
import numpy as np
from PIL import Image
import random

# 定义返回值为字体颜色的函数
def random_color(word, font_size, position, orientation, random_state=None, **kwargs):
    # 随机返回RGB三元组颜色值
    return "rgb({0},{1},{2})".format(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

# 构建WordCloud对象,并同时指定mask和color_func参数
wc = WordCloud(mask=np.array(Image.open("heart.png")), background_color="white", max_words=2000, font_path="msyh.ttf", color_func=random_color)

# 设置文本
text = "Python is great and easy to learn. It's really fun to program with Python. Python is amazing!"

# 生成词云图
wc.generate(text)

# 保存词云图
wc.to_file("mask.png")

上面的代码中,我使用了一个心形图片当作WordCloud的mask参数,获取到图片的像素数组后,词云图就会呈现出心形的形状。再通过之前定义的随机颜色函数random_color设置字体的颜色,生成的词云图如下:

三、通过recolor方法更改字体颜色

WordCloud还提供了一个叫recolor的方法可以更改已生成的词云图的字体颜色。需要注意的是,该方法只对png类型的图片有效。

from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
from PIL import Image

# 定义要读取的图片和字体路径
image_path = "heart.png"
font_path = "msyh.ttf"

# 构建WordCloud对象
wc = WordCloud(background_color="white", max_words=2000, font_path=font_path)

# 设置文本和形状
text = "Python is great and easy to learn. It's really fun to program with Python. Python is amazing!"
mask = np.array(Image.open(image_path))

# 生成词云图并保存
wc.generate(text)
wc.to_file("recolor_before.png")

# 生成ImageColorGenerator对象
image_color = ImageColorGenerator(mask)

# 通过recolor方法更改字体颜色,并保存
wc.recolor(color_func=image_color).to_file("recolor_after.png")

上面的代码中,我通过读取图片和设置字体路径构建了WordCloud对象。然后通过generate方法生成词云图,并保存到文件中。接着,我又通过ImageColorGenerator对象生成ImageColorGenerator实例,将其作为参数传递给recolor方法。recolor方法根据ImageColorGenerator对象生成一个新的词云图,并使字体颜色与图像中的颜色相对应。生成的词云图如下所示:

四、小结

以上就是对Python词云设置字体颜色的详细阐述。我们可以通过color_func参数和mask参数设置字体颜色,也可以通过recolor方法更改字体颜色。让词云图更加生动有趣,增加创新性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。