|
|
|
import matplotlib.pyplot as plt
|
|
|
|
from wordcloud import WordCloud
|
|
|
|
from imageio import imread
|
|
|
|
from scanfiles import scan_files
|
|
|
|
import csv
|
|
|
|
|
|
|
|
|
|
|
|
def create_cloud(dic):
|
|
|
|
# 将内容写入temp.txt
|
|
|
|
with open('temp.txt', 'w', encoding='utf-8') as f:
|
|
|
|
for i in dic:
|
|
|
|
f.write(("%s " % i[0]) * i[1] + "\n")
|
|
|
|
temp_txt = open("temp.txt", "r", encoding='utf-8').read()
|
|
|
|
filepath = 'cloudshape'
|
|
|
|
scan_files(filepath) # 扫描词云图背景图文件
|
|
|
|
cloudshape = filepath + '\\' + "bird.jpg" # 默认背景图片
|
|
|
|
|
|
|
|
# 选择词云图背景文件的序号
|
|
|
|
picture_no = input("Please select a background by the number in range:")
|
|
|
|
with open('filename.csv', 'r', encoding='utf-8') as csvfile:
|
|
|
|
reader = csv.reader(csvfile)
|
|
|
|
for i in reader:
|
|
|
|
if picture_no == i[0]:
|
|
|
|
print('You choose cloud shape:', i[1], end='\n')
|
|
|
|
cloudshape = filepath + '\\' + i[1]
|
|
|
|
if cloudshape == filepath + '\\' + "bird.jpg": # 判断是否成功选择词云形状
|
|
|
|
print('Input error,use default cloud shape bird.jpg', end='\n')
|
|
|
|
|
|
|
|
color_mask = imread(cloudshape) # 词云形状图设置
|
|
|
|
|
|
|
|
# 词云参数设置
|
|
|
|
cloud = WordCloud(
|
|
|
|
font_path='fonts\\sim.ttf', # 字体必须设置
|
|
|
|
background_color='white', # 词云图像的背景色,默认为黑色
|
|
|
|
mask=color_mask, # 绘制模板
|
|
|
|
max_words=200, # 最大显示单词字数
|
|
|
|
max_font_size=200, # 最大单词的字体大小,若无设置,则使用画布的大小
|
|
|
|
)
|
|
|
|
word_cloud = cloud.generate(temp_txt)
|
|
|
|
plt.imshow(word_cloud)
|
|
|
|
plt.axis('off')
|
|
|
|
plt.show()
|