我的自学之路(python)012----词云wordcloud

2019-04-17  本文已影响0人  濃姫

上瘾

与其说是着迷于写代码,不如说是着迷于进入“心流”的状态,那种全神贯注、废寝忘食的状态,抬起头已是几个小时以后的事情了,这种感觉很美妙,于是我上瘾了。

wordcloud

上瘾之后,我得找点目标啊。在使用matploutlib来做出统计图标之后,我又google到了词云wordcloud,于是开始试着写一写。
思路是:把统计图表的代码换成wordcloud就好。

mask = np.array(Image.open(r'/图片地址'))
font = 'SimHei.ttf' #中文字体需要特别指定
wc = WordCloud(font_path=font,mask = mask,scale = 1.5,max_words=200,background_color = 'white',max_font_size = 200).generate_from_text(要生成的词语)  #主代码
image_colors = ImageColorGenerator(mask) # 从背景图建立颜色方案
wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案plt.imshow(wc,interpolation="bilinear") #根据图片的勾勒来形成特定的图片
plt.axis('off')
wc.to_file('show_chinese.png')  # 保存为图片   
plt.show()   #显示图片

微信返回词云

认识到代码块就是电路和砖块和水泥,它们就是用来搭建自己想要的大型建筑时,我对这个知识的恐惧感少了很多,体会到了创造的快乐,经过多次调试,微信返回词云的代码终于成功了,在这里贴一下。

# 处理文章词频,然后输出图像返回给微信

import matplotlib
matplotlib.use('TkAgg')
import re
from collections import Counter
import numpy as np
import requests
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
from PIL import Image
import os
from os import path
from pyquery import PyQuery
from wxpy import *
import time
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']


bot = Bot(cache_path = True)

@bot.register(Friend)
def print_others(msg):
#print(msg)
if msg.type == 'Sharing':
        response = requests.get(msg.url)
        document = PyQuery(response.text)
        content = document('#js_content').text()
        content = re.sub('[a-zA-Z0-9’!"%&\'^\s+|\s+$()*+,-./:;,。?、…?“”‘’!]+',"",content)
        seg_list = jieba.cut(content, cut_all=True)
        remove_word = [u'的', u',',u'和', u'是', u'随着', u'对于',
u'等于',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
u'通常',u'如果',u'但是',u'一个',u'自己',u'因此',
u'没有',u'很多',u'可以',u'这个',u'虽然',u'因为',u'这样',u'已经',u'现在',
u'一些',u'比如',u'当然',u'如果',u'就是',u'比如',u'这些',u'由于',u'而且',
u'并且',u'他们']
        result = Counter()
        for seg in seg_list:
                if len(seg) > 1 and seg not in remove_word:
                    result[seg] = result[seg] + 1
        mydic = result.most_common(50)
        source_data={}
        for i in mydic:
            source_data[i[0]] = i[1]
        print(source_data)
        
        mask = np.array(Image.open(r'/Users/mac/Desktop/heart.jpg'))
        font = 'SimHei.ttf'
        wc = WordCloud(font_path=font,mask = mask,scale = 1.5,max_words=200,background_color = '#383838',max_font_size = 200).generate_from_frequencies(source_data)
        image_colors = ImageColorGenerator(mask) # 从背景图建立颜色方案
        wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
        plt.imshow(wc,interpolation="bilinear")
        plt.axis('off')
        wc.to_file('show_chinese.png')  # 保存为图片   
        msg.sender.send_image('show_chinese.png') 
        plt.show()   
        

embed()
上一篇 下一篇

猜你喜欢

热点阅读