python/wordcloud制作词云图

匿名 (未验证) 提交于 2019-12-02 22:51:30

主要库: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'))

结果如图:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!