该代码可从文件中读取数据,并生成对应的词云图片,代码见下:
# author: hr,wu
# location: fudan u.
# time: 2022/4
import random
import jieba
import collections
import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from matplotlib import colors
with open('data.txt', encoding='utf-8') as f:
data = f.read()
# 文本预处理 去除一些无用的字符 只提取出中文出来
new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)
print(new_data)
list = {}
print()
a = 100
b = 200
for item in new_data:
list[item] = random.randint(a, b)
#建立颜色数组,可更改颜色
color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',
'#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']
#调用
colormap=colors.ListedColormap(color_list)
# 绘制词云
my_cloud = WordCloud(
background_color='white', # 设置背景颜色 默认是black
width=900, height=600,
max_words=100, # 词云显示的最大词语数量
font_path='simhei.ttf', # 设置字体 显示中文
max_font_size=40, # 设置字体最大值
min_font_size=20, # 设置字体最小值
random_state=200, # 设置随机生成状态,即多少种配色方案
prefer_horizontal=1.0,
colormap=colormap,
).generate_from_frequencies(list)
# 显示生成的词云图片
plt.imshow(my_cloud, interpolation='bilinear')
# 显示设置词云图中无坐标轴
plt.axis('off')
plt.show()
文件中的内容为:每一行只有一个关键词。
结果:
因为参数可调,所以可以按照个人需求来弄,大家发挥自己的文艺细胞来调配色和大小吧,冲!