python/wordcloud制作词云图

主要库:wordcloud,jieba,matplotlib

本例子实现制作一个网页内容的词云

注意,如果中文词云出现乱码,可以根据下面的博客介绍内容进行操作:
https://blog.csdn.net/Dick633/article/details/80261233

参考文章:http://liyangbit.com/nltk/nltk-yidaiyilu/

代码中出现的图片timg.jpg是直接在百度图片上找到的中国地图。

下面直接贴上代码,已有详细注释

# -*- coding: utf-8 -*-
"""
Created on Tue Jun  5 12:56:01 2018

@author: kindy

本例子实现制作一个网页内容的词云

注意,如果中文词云出现乱码,可以根据下面的博客介绍内容进行操作:
https://blog.csdn.net/Dick633/article/details/80261233

参考文章:http://liyangbit.com/nltk/nltk-yidaiyilu/

"""
## 0、导入相关包
import jieba
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import os
import PIL.Image as Image
import numpy as np
import requests
from bs4 import BeautifulSoup

## 1、需要分析的网页
url_2018 = 'http://www.gov.cn/xinwen/2018-03/22/content_5276608.htm'


## 2、构造提取网页内容以及使用jieba分词相关函数

def extract_text(url):
    """
    url: 传入的网页地址
    Extract html content.抽取html网页内容
    """
    page_source = requests.get(url).content
    bs_source = BeautifulSoup(page_source,'lxml')
    report_text = bs_source.find_all('p')

    text = ''

    for p in report_text:
        text += p.get_text()
        text += '\n'

    return text


## 3、首先使用 jieba 中文分词工具进行分词

text  =extract_text(url_2018) # 这一步可以自己输入需要制作词云的文本
wordlist = jieba.cut(text, cut_all=False)      # cut_all, True为全模式,False为精确模式

wordlist_space_split = ' '.join(wordlist)

## 4、使用WordCloud词云

d = os.path.dirname(__file__) # 获取当前路径
alice_coloring = np.array(Image.open(os.path.join(d,'timg.jpg'))) # 打开一幅图片,图片形状就是词云的形状
# 简单介绍WorCloud的参数:
# background_color: 背景颜色,可以是16进制形式,如 #ffffff
# mask :就是自己生成的词云想要哪种形状,就是前面打开的图片内容里的形状
# max_words: 最大词数,即最多显示多少词
# max_font_size:最大字体大小
my_wordcloud = WordCloud(background_color='white', max_words=100, mask=alice_coloring,
                         max_font_size=300, random_state=42).generate(wordlist_space_split)

image_colors = ImageColorGenerator(alice_coloring) # 词云的颜色是根据蒙版图片里的颜色生成的

plt.show(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)            # 以图片的形式显示词云
plt.axis('off')                     # 关闭坐标轴
plt.show()

## 5、保存词云图片
#my_wordcloud.to_file(os.path.join(d, 'words_cloud.png'))

结果如图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/ouening/article/details/80580063