1 环境准备
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image,ImageSequence
from wordcloud import WordCloud,ImageColorGenerator
2 数据准备
数据为csv格式。
name | val |
---|---|
词1 | 词频1 |
词2 | 词频2 |
词3 | 词频3 |
… | … |
同时需要准备一个图片,作为背景。
格式可以为jpg或者png。
3 代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image,ImageSequence
from wordcloud import WordCloud,ImageColorGenerator
myfont = r'C:\Windows\Fonts\times.ttf' #查找系统字体
def DrawWordcloud(read_name):
image = Image.open('123.jpg') #作为背景形状的图
graph = np.array(image)
#参数分别是指定字体、背景颜色、最大的词的大小、使用给定图作为背景形状
wc = WordCloud(scale=4,font_path =myfont, background_color = 'white', max_words = 400, mask = graph,mode = "RGBA")
fp = pd.read_csv(read_name)#读取词频文件
name = (fp.name)#词
value = fp.val#词的频率
for i in range(len(name)):
name[i] = str(name[i])
name[i] = name[i]
dic = dict(zip(name, value))#词频以字典形式存储
wc.generate_from_frequencies(dic)#根据给定词频生成词云
image_color = ImageColorGenerator(graph)
plt.imshow(wc)
plt.axis("off")#不显示坐标轴
plt.show()
wc.to_file('词云.png')
if __name__=='__main__':
DrawWordcloud("数据表.csv")