词云图生成器
今天有兴趣帮朋友做了一个词云图生成器,感觉还挺有意思的,放出来给大家玩玩。
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()