手写一个词云图生成器,可调形状,可调背景颜色,可调字体色系

这篇博客分享了一款自制的词云图生成器,用户可以自由修改词语、词频、背景颜色和字体颜色。程序提供背景图案支持,允许自定义背景图片以生成独特形状的词云。主要配置文件为word_times.xlsx,包括词语词频、背景颜色和字体色系等设置。程序运行后,会根据设定生成多张不同色系的词云图。
摘要由CSDN通过智能技术生成

词云图生成器

今天有兴趣帮朋友做了一个词云图生成器,感觉还挺有意思的,放出来给大家玩玩。

1、程序下载地址

链接:https://pan.baidu.com/s/17IICPmFPbv2n0ad5XrsMhA
提取码:yu6h
–来自百度网盘超级会员V5的分享

2、用处

可修改词语、词频、图形、背景颜色、字体颜色,最后生成好看的一张词云图:
在这里插入图片描述
在这里插入图片描述

3、使用方式:
下载解压后文件夹是这样的
在这里插入图片描述

3.1、程序运行:

点击 词云图生成器.exe 即可。

3.2、各文件夹和文件用处说明:

1、background文件夹存放背景图片,程序会自动根据里面的背景图片生成对应图案的词云图,你可以自己绘制一个图案,
背景颜色为白色即可,图案颜色不限,但要跟背景颜色有明显区分;

2、stopwords是一个配置文件,不可修改,不可移动;

3、生成词云图文件夹用于存放最终生成的词云图;

4、word_times.xlsx,是程序的主要配置文件,里面有4个sheet页:
4.1、词语词频:可以修改词语和词频,词频数字大的,最后生成的词云图上,文字越大;
4.2、背景颜色:可以修改词云图的背景颜色,white可改为black, grey等等颜色单词,也可以改为RGB颜色代码,例如:#DCDCDC
4.3、字体色系:可以修改字体的色系,但色系只能参考第4个sheet页的内容;
4.4、参考色系:一些matplotlib支持的色系,用于字体色系的参考;

注意每个表的首行不可修改,其他内容可以修改,内容修改时,注意背景颜色和字体色系的书写正确,有空格可能会导致程序
识别不了颜色,词语可带空格,词频也不可带空格。

4、程序运行结果

假设你的背景图片使用了2张图
在这里插入图片描述
那在程序运行结束后,生成词云图的文件夹里,会新建2个文件夹,文件夹的名字是按照背景图片名字来的
在这里插入图片描述
点击进去,可以看到2个文件夹都有多张图片
在这里插入图片描述
在这里插入图片描述

假如你在配置表里面的字体色系配置了4个色系,那么这里会生成4张不同色系字体渲染出来的图片。

5、代码参考
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# date: 2021/7/11
# filename: test2
# author: kplin

import os
from wordcloud import WordCloud
from scipy.misc import imread
import pandas as pd

def read_table(dir_path):
    file_path = os.path.join(dir_path, 'word_times.xlsx')
    df = pd.read_excel(file_path, sheet_name='词语词频')
    key_words = df['关键词'].tolist()
    times = df['使用频次'].tolist()
    text = ''
    for i in range(len(key_words)):
        text += ('%s '%key_words[i])*int(times[i])

    colors = pd.read_excel(file_path, sheet_name='字体色系')['色系'].tolist()
    background_color = pd.read_excel(file_path, sheet_name='背景颜色')['背景颜色'].tolist()[0]
    return text, colors, background_color

def create_img(dir_path):
    # 读取词语
    text, colors, background_color = read_table(dir_path)
    # 读取背景图
    imgs_path = os.path.join(dir_path, 'background')
    imgs = os.listdir(imgs_path)

    # 删除并创建新的图片文件夹
    imgs_dir = os.path.join(dir_path, '生成词云图')
    # 先删除图片文件夹
    tmp_dir = os.listdir(imgs_dir)
    for i in tmp_dir:
        path = os.path.join(imgs_dir, i)
        files = os.listdir(path)
        for j in files:
            path3 = os.path.join(imgs_dir, i, j)
            os.remove(path3)
        os.rmdir(path)
    # 创建图片文件夹
    for i in imgs:
        new_dir = os.path.join(imgs_dir, i.split('.')[0])
        os.mkdir(new_dir)

    for i in imgs:
        c = 1
        for j in colors:
            img_path = os.path.join(imgs_path, i)
            mask = imread(img_path)
            w = WordCloud(font_path="msyh.ttc", collocations=False, mask=mask,
                          colormap=j,
                          # colormap = 'CMRmap',
            #color_func = random_color_func,
                          background_color=background_color)

            new_imgs_dir = os.path.join(imgs_dir, i.split('.')[0])
            new_img_name = i.split('.')[0] + '%s.'%j + i.split('.')[1]
            to_path = os.path.join(new_imgs_dir, new_img_name)
            print(to_path)
            w.generate(text)
            w.to_file(to_path)
            c += 1


def main():
    dir_path = os.getcwd()
    create_img(dir_path)

if __name__ == '__main__':
    main()
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值