Python值itchat制作词云代码

# -*- coding: utf-8 -*-
"""
Created on Thu Jul  5 19:04:15 2018

@author: Administrator
"""
import itchat
import re
import os
itchat.login()  #弹出二维码,扫描登录微信
friends = itchat.get_friends(update=True)[0:]
NickName = friends[0].NickName #获取自己的昵称
tList = []  #空列表
##friendsss=friends[12:112]  #把第12到底112个好友的信息传给friendsss
for i in friends:  ##循环,从friends[0]到最后一个好友
    #Signature是指微信好友的签名,后面的replace是替换函数分别指去掉符号'空格' '°' 编号(不确定) 和 表情
    signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
    rep = re.compile("1f\d.+")  #使用一个正则表达式对文本进行处理
    signature = rep.sub("", signature)  #一种字符替换函数,相当于前面的replace,但参数,用法不同
    tList.append(signature)  #把对象signature添加到tList末尾
    # 拼接字符串  ""里面指分隔符
    text = "".join(tList)  
# jieba分词
import jieba
#全模式分词
wordlist_jieba = jieba.cut(text, cut_all=True)
#空格连接
wl_space_split = " ".join(wordlist_jieba)
# wordcloud词云
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
#返回文件的绝对路径
d= os.path.dirname(os.path.abspath( __file__ ))
#os.path.join(d, "0.jpg")  #返回文件0.jpg的绝对路径(具体到比如C:\windows\0.jpg)
alice_coloring = np.array(Image.open(os.path.join(d, "xin.jpg")))
#设置wordcloud的各种参数
my_wordcloud = WordCloud(
        background_color="white",#设置背景着色,改颜色下不显示词
        max_words=1000,#设置最大显示字数
        mask=alice_coloring,#设置背景图片
        max_font_size=400,#字体最大值
        random_state=500,#设置生成方案,即配色方案
        font_path='C:\shiqisuidxiatian.ttf').generate(wl_space_split) #导入字体和文本,.generate(d) 是指导入文本、引用制作词云的文本,d是文本
# 从背景图片生成颜色值
image_colors = ImageColorGenerator(alice_coloring)
# 重新着色 recolor(color_func=是格式,不用变
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
file_name_p = NickName+'4.jpg' #文件命名
my_wordcloud.to_file(file_name_p) #保存图片
plt.axis("off")
plt.show()

注意点:

        1.xin.jpg是导入背景图片的图片,根据自己的图片名做更改,和程序放同一个文件夹下

        2.font_path是导入字体位置,字体最好放c盘

        3.文件命名是保存的图片的的名字,后面的'4.jpg'根据需要自行修改

猜你喜欢

转载自blog.csdn.net/qq_26658517/article/details/81163819
今日推荐