← 返回教程目录
第 3 章 · 第 3 节 词云

等大文字:签名墙 / Logo 拼图

Equal-Size Words: Signature Wall & Logo

wordcloud 默认字号 = 词频,频次高的大、频次低的小。但实际场景(签名墙、姓名拼图、Logo 文字)需要所有字大小完全一致

1. 问题:wordcloud 默认字号跟频次挂钩

# 默认行为:size ~ frequency


wc = WordCloud(width=800, height=400).generate(text)


# → 频次最高的词字号最大

2. 解决方案:matplotlib 手画

import matplotlib.pyplot as plt


import random





words = ['张三', '李四', '王五', '赵六', '钱七', '孙八', '周九', '吴十']





fig, ax = plt.subplots(figsize=(10, 6), dpi=120)


ax.set_xlim(0, 100)


ax.set_ylim(0, 60)


ax.axis('off')





# 1. 随机散点位置(避免重叠)


random.seed(42)


positions = []


for word in words:


    while True:


        x, y = random.uniform(10, 90), random.uniform(10, 50)


        # 简单防重叠


        if all(abs(x-px) > 12 or abs(y-py) > 6 for px, py in positions):


            positions.append((x, y))


            break





    ax.text(x, y, word, fontsize=24, ha='center', va='center', color='#6e5cff')





plt.savefig('signature_wall.png', bbox_inches='tight', facecolor='white')

3. 更优雅:用 grid 排版

fig, ax = plt.subplots(figsize=(10, 6), dpi=120)


ax.axis('off')





n = len(words)


cols = 4


rows = (n + cols - 1) // cols





for i, word in enumerate(words):


    row, col = i // cols, i % cols


    x = (col + 0.5) / cols * 100


    y = 100 - (row + 0.5) / rows * 100


    ax.text(x, y, word, fontsize=22, ha='center', va='center', color='#00d4ff')





plt.savefig('grid_wall.png', bbox_inches='tight', facecolor='white')

4. Logo 文字拼图(把 logo 当 mask)

import numpy as np


from PIL import Image





# 读 logo 轮廓(纯黑底白字)


logo = np.array(Image.open('logo_outline.png').convert('L'))


h, w = logo.shape





# 找所有"白点"位置(logo 笔画上的点)


points = np.argwhere(logo > 128)





fig, ax = plt.subplots(figsize=(8, 8), dpi=120)


ax.set_xlim(0, w)


ax.set_ylim(0, h)


ax.axis('off')


ax.invert_yaxis()  # 图像坐标翻转





for i, (y, x) in enumerate(points[::20]):  # 每 20 个点取 1 个


    word = words[i % len(words)]


    ax.text(x, y, word, fontsize=10, ha='center', va='center')





plt.savefig('logo_text.png', bbox_inches='tight', facecolor='white')
应用场景:员工签名墙、毕业纪念册、Logo 周边商品、抽奖活动背景图。我们词云软件内置 5 种等大模式 + 30+ Logo 模板。

下一章进入文本分析"重头戏" — LDA 主题分析。学会后,5 万条评论 1 键生成主题气泡图。

等大文字 + 形状 + 背景 — 词云软件一键搞定,30+ 模板

配套软件内置案例数据 + 模板,导入即出图,无需写代码

查看淘宝软件 →