Python基于WordCloud制作词云图


Posted in Python onNovember 29, 2019

这篇文章主要介绍了python基于WordCloud制作词云图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1. 导入需要的包package

import matplotlib.pyplot as plt
from scipy.misc import imread
from wordcloud import WordCloud,STOPWORDS
import xlrd

2. 设置生成词云图的背景图片,最好是分辨率高且色彩边界分明的图片

def set_background(picpath):
  back_coloring = imread(picpath)# 设置背景图片,png等图片格式
  return back_coloring

3. 创建词云图:WordCloud

def create_word_cloud(txt_str, back_coloring): #txt_str表示导入的是字符串格式数据,#back_color表示的是背景图片位置
  print('---- 根据词频,开始生成词云! ----')
  font = r'C:\Windows\Fonts\simsun.ttc' #加载显示字体
  wc = WordCloud(
    font_path=font,
    collocations=False, # 去重,如果不加,词云图会显示相同的词
    stopwords=STOPWORDS, #加载停用词,如果不自己指定,则会加载默认的停用词
    max_words=100,
    width=2000,
    height=1200,
    # background_color='white',
    mask=back_coloring,
  )
  wordcloud = wc.generate(txt_str)
  # 写词云图片
  wordcloud.to_file(".\wordcloud_test.png")
  # 显示词云文件
  plt.imshow(wordcloud)
  plt.axis("off")
  plt.show()

4. 默认的停用词一般在:假如anaconda安装在D盘,则会在其目录:D:\Anaconda3\Lib\site-packages\wordcloud\stopwords,其中都是英文词,例如:

Python基于WordCloud制作词云图

Python基于WordCloud制作词云图

注意:也可以在jieba分词中,先利用自己的停用词,得到去除停用词之后的文本字符串来绘制词云图:

5. 此时,词云图无法显示数字,这是因为 wc.generate 操作中,有去除数字的语句:在wordcloud.py中,第560行左右,所以想要显示数字,需要先注释这一行

Python基于WordCloud制作词云图

6. 假设想要显示的词,已经经过jieba分词,保存在txt文档中,则绘制词云图的方法是:

例如:txt中是每行是一个词:

Python基于WordCloud制作词云图

则,先读取txt文件,形成字符串格式文本,再绘制

if __name__ == '__main__': 
  picpath = r".\xxx.png" #背景图片路径
  back_coloring = set_background(picpath)
  
  with open(r".\jieba_分词数据.txt", "r",encoding='utf-8') as f:
    remove_stop_str = f.read()
  
  create_word_cloud(remove_stop_str, back_coloring)

7. 如果通过jieba分词的数据已经处理成了(词, 词频)并保存在excel中,例如这种两列格式的excel表,第一行是标签如(词, 词频):

Python基于WordCloud制作词云图

则可以先读取词频再显示,python读取excel数据可以通过 xlrd.open_workbook 方法:

def read_from_xls(filepath,index_sheet):
  #读取文件名,filepath是excel文件的路径,index_sheet是第几个sheet
  #读取表格#
  # 设置GBK编码
  xlrd.Book.encoding = "gbk"
  rb = xlrd.open_workbook(filepath)
  print(rb)

  sheet = rb.sheet_by_index(index_sheet)
  nrows = sheet.nrows
  data_tmp = []

  for i in range(nrows - 1):
    tt=i+1 #excel的第一行是标签
    tmp_char = [str(sheet.cell_value(tt,0))] #第一列是词
    tmp_num = int(sheet.cell_value(tt,1))  #第二列是词频
    data_tmp.extend(tmp_char*tmp_num)
  return data_tmp

然后,读数据和生成词云图:

if __name__ == '__main__': 
  picpath = r".\xxx.png"
  back_coloring = set_background(picpath)
  
  data_dic = read_from_xls(r'D:\Python_workspace\spyder_space\jieba分词表.xlsx',0)
  data_dic_str = '\n'.join(data_dic) #转成字符串格式
  
  create_word_cloud(data_dic_str, back_coloring)

8. 总结代码

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 19 10:47:17 2019

@author: Administrator
"""
import matplotlib.pyplot as plt
from scipy.misc import imread
from wordcloud import WordCloud,STOPWORDS
import xlrd

def set_background(picpath):
  back_coloring = imread(picpath)# 设置背景图片
  return back_coloring

def create_word_cloud(txt_str, back_coloring):
  print('---- 根据词频,开始生成词云! ----')
  font = r'C:\Windows\Fonts\simsun.ttc'
  wc = WordCloud(
    font_path=font,
    collocations=False, # 去重
    stopwords=STOPWORDS,
    max_words=100,
    width=2000,
    height=1200,
    # background_color='white',
    mask=back_coloring,
  )
  wordcloud = wc.generate(txt_str)
  # 写词云图片
  wordcloud.to_file(".\wordcloud_test.png")
  # 显示词云文件
  plt.imshow(wordcloud)
  plt.axis("off")
  plt.show()

def read_from_xls(filepath,index_sheet):
  #读取文件名
  #读取表格#
  # 设置GBK编码
  xlrd.Book.encoding = "gbk"
  rb = xlrd.open_workbook(filepath)
  print(rb)

  sheet = rb.sheet_by_index(index_sheet)
  nrows = sheet.nrows
  data_tmp = []

  for i in range(nrows - 1):
    tt=i+1
    tmp_char = [str(sheet.cell_value(tt,0))]
    tmp_num = int(sheet.cell_value(tt,1))
    data_tmp.extend(tmp_char*tmp_num)
  return data_tmp

if __name__ == '__main__': 
  picpath = r".\xxx.png"
  back_coloring = set_background(picpath)
  data_dic = read_from_xls(r'D:\Python_workspace\spyder_space\jieba分词表.xlsx',0)
  data_dic_str = '\n'.join(data_dic)
  
#  with open(r".\jieba_分词数据.txt", "r",encoding='utf-8') as f: 
#  remove_stop_str = f.read() 


create_word_cloud(data_dic_str, back_coloring)

当然绘制词云图的方法有很多,这只是其中的一种

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式抓取成语网站
Nov 20 Python
Python获取当前时间的方法
Jan 14 Python
Python实现Linux下守护进程的编写方法
Aug 22 Python
Python实现抢购IPhone手机
Feb 07 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python 杀死自身进程的实现方法
Jul 01 Python
python获取点击的坐标画图形的方法
Jul 09 Python
Python 利用高德地图api实现经纬度与地址的批量转换
Aug 14 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 Python
Python实现栈和队列的简单操作方法示例
Nov 29 #Python
python调用函数、类和文件操作简单实例总结
Nov 29 #Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 #Python
python实现把两个二维array叠加成三维array示例
Nov 29 #Python
python的time模块和datetime模块实例解析
Nov 29 #Python
python实现将一维列表转换为多维列表(numpy+reshape)
Nov 29 #Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 #Python
You might like
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
2017/09/05 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
详解vue后台系统登录态管理
2019/04/02 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
Python的randrange()方法使用教程
2015/05/15 Python
python中引用与复制用法实例分析
2015/06/04 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
自我鉴定三原则
2014/01/13 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
学生请假条
2014/04/11 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
2015年教师国培感言
2015/08/01 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书