详细说明:

“词云”就是数据可视化的一种形式,给出一段文本,根据文本中词语的出现频率而生成的一幅图像,从而过滤掉大量的文本信息,人们只要扫一眼就能够明白文章主旨,使得数据分析的结果更加直观。

准备工作:

1.安装必要的第三方库:

pip install wordcloud

pip install jieba

pip install numpy

pip install wxPython

安装PIL,在以下地址下载PIL库进行安装:

http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.7.exe

(或在http://effbot.org/downloads/ 中找到与你操作系统及python版本相对应

版本的PIL)

需要注意一点,因为wordcloud自带的字体文件不支持中文,为了让wordcloud支持中文词云的生成,安装完wordcloud库后需要hack一下,具体做法如下:

复制一个中文字体文件(在本项目中为方正姚体 FZYTK.TTF)到wordcloud安装路径下(如:C:\Python27\Lib\site-packages\wordcloud),然后打开wordcloud库中的wordcloud.py文档,将其中的

"FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))"

(本项目的附件中将附带 FZYTK.TTF 字体文件)

改写为

"FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'FZYTK.TTF'))".

这样wordcloud将会以"FZYTK.TTF"作为字体文件.

项目结构:

整体的项目结构十分简单,一共三个脚本文件,一个是GUI界面脚本(draw_gui.py),

一个是GUI菜单的辅助性脚本(utility_template.py),

一个是词云生成器脚本(wordcloud_gen.py)。

如下:

程序实现

以下是程序的实现思路,以及步骤,实现步骤里,附上了关键代码,全部的代码,请下载代码后阅读

在wordcloud_gen.py中导入相关的库:

from os import path

from PIL import Image

import numpy as np

import time

from wordcloud import WordCloud, STOPWORDS

import jieba

编写wordcloud_gen.py中的相关函数,

读取传入文档:

def get_text(fn):

text = open(fn).read()

return text

中文分词:

def get_text_cn(fn):

t0 = get_text(fn)

t0 = jieba.cut(t0,cut_all = False)

text = " ".join(t0)

return text

生成词云:

def draw_wc(text,mask_path,stopwords):

mask = np.array(Image.open(mask_path))

wc = WordCloud(max_words = 1000,mask = mask,stopwords = stopwords,

margin = 0,random_state=1).generate(text)

im = wc.to_image()

im.show()

fn = str(int(time.time()))+'.jpg'

im.save(fn)

return im

3.在draw_gui.py中编写用户界面:

导入相关的库:

import wx

import os

from os import path

from collections import namedtuple

import wx.lib.rcsizer as rcs

from wordcloud import STOPWORDS

from utility_template import layout_template #自定义的库

import wordcloud_gen as wcg #自定义的库

编写界面:

class MainWindow(wx.Frame):

def __init__(self,parent,title):

wx.Frame.__init__(self,parent,title=title,size=(600,-1))

Size = namedtuple("Size",['x','y'])

s = Size(100,50)

self.cn_text = None

self.en_text = None

cwd = os.getcwd()

self.mask_path = path.join(path.abspath(cwd),'alice_mask.png')

self.user_sw = STOPWORDS

self.lt = layout_template()

self.name = 'WordCloud draw'

self.version = '0.2'

self.des = '''Draw the word cloud.\n'''

self.git_website = "https://github.com/WellenWoo/WordCloud_draw"

self.copyright = "(C) 2018 All Right Reserved"

"""创建菜单栏"""

filemenu = wx.Menu()

menuExit = filemenu.Append(wx.ID_EXIT,"E&xit\tCtrl+Q","Tenminate the program")

confmenu = wx.Menu()

menuSw = confmenu.Append(wx.ID_ANY,"StopWords","Add user StopWrods dict")

menuMask = confmenu.Append(wx.ID_ANY,"Mask","Set mask")

helpmenu = wx.Menu ()

menuAbout = helpmenu.Append(wx.ID_ABOUT ,"&About","Information about this program")

menuBar = wx.MenuBar ()

menuBar.Append(filemenu,"&File")

menuBar.Append(confmenu,"&Configure")

menuBar.Append(helpmenu,"&Help")

self.SetMenuBar(menuBar)

"""创建输入框"""

self.in1 = wx.TextCtrl(self,-1,size = (2*s.x,s.y))

"""创建按钮"""

b1 = wx.Button(self,-1,'text')

b2 = wx.Button(self, -1, "run")

"""设置输入框的提示信息"""

self.in1.SetToolTipString('choose a text file')

"""界面布局"""

self.sizer0 = rcs.RowColSizer()

self.sizer0.Add(b1,row = 1,col = 1)

self.sizer0.Add(self.in1,row = 1,col = 2)

self.sizer0.Add(b2,row = 1,col = 3)

"""绑定回调函数"""

self.Bind(wx.EVT_BUTTON, self.choose_cn, b1)

self.Bind(wx.EVT_BUTTON, self.draw_cn, b2)

'''菜单绑定函数'''

self.Bind(wx.EVT_MENU,self.OnExit,menuExit)

self.Bind(wx.EVT_MENU,self.OnAbout,menuAbout)

self.Bind(wx.EVT_MENU,self.get_stopwords,menuSw)

self.Bind(wx.EVT_MENU,self.get_mask,menuMask)

self.SetSizer(self.sizer0)

self.SetAutoLayout(1)

self.sizer0.Fit(self)

self.CreateStatusBar()

self.Show(True)

界面如下:

编写控件的回调函数:

def choose_cn(self,evt):

"""Choose a Chinses text file"""

self.cn_text = None

self.cn_text = self.choose_file(txtformat)

if self.cn_text is None:

pass

else:

self.in1.Clear()

self.in1.write(self.cn_text)

def choose_file(self,wildcard):

'''choose img'''

dlg = wx.FileDialog(

self, message="Choose a file",

defaultDir=os.getcwd(),

defaultFile="",

wildcard=wildcard,

style=wx.OPEN | wx.MULTIPLE | wx.CHANGE_DIR

)

if dlg.ShowModal() == wx.ID_OK:

paths = dlg.GetPaths()

dlg.Destroy()

return paths[0]

else:

return None

def draw_cn(self,evt):

if self.cn_text is None:

self.raise_msg(u'plaese Choose a Chinses text file first.')

return None

else:

text = wcg.get_text_cn(self.cn_text)

wcg.draw_wc(text,self.mask_path,self.user_sw)

运行效果如下:

(英文文档即是程序代码文档本身)Python 实现的、带GUI界面的词云生成器

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

python实现的、带GUI界面电影票房数据可视化程序

代码地址如下:http://www.demodashi.com/demo/14588.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...

用python爬取微博数据并生成词云

很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...

python抓取电影<海王>影评词云生成

海王是前段时间大热的影片,个人对这种动漫题材的电影并不是很感兴趣.然鹅,最近这部电影实在太热了,正好最近看自然语言处理的时候,无意间发现了word cloud这个生成词云的库,还蛮好玩的,那就抓抓这部 ...

python:用wordcloud生成一个文本的词云

今天学习了wordcloud库,对生成了词云图片,非常漂亮.就想多尝试几个,结果发现一系列问题.最常出现的一个错误就是"UnicodeDecodeError : .. ...

利用python实现简单词频统计、构建词云

1.利用jieba分词,排除停用词stopword之后,对文章中的词进行词频统计,并用matplotlib进行直方图展示 # coding: utf-8 import codecs import ma ...

【Python】利用豆瓣短评数据生成词云

在之前的文章中,我们获得了豆瓣爬取的短评内容,汇总到了一个文件中,但是,没有被利用起来的数据是没有意义的. 前文提到,有一篇微信推文的关于词云制作的一个实践记录,准备照此试验一下. 思路分析 读文件 ...

Python——五分钟带你弄懂迭代器与生成器,夯实代码能力

本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周一Python专题,给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉 ...

从CentOS安装完成到生成词云python学习日记

欢迎访问我的个人博客:原文链接 前言 人生苦短,我用python.学习python怎么能不搞一下词云呢是不是(ง •̀_•́)ง 于是便有了这篇边实践边记录的笔记. 环境:VMware 12pro + ...

python 生成18年写过的博客词云

文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开 ...

随机推荐

hive 调优总结

一.join优化 做join之前对数据进行预处理,减少参加join的数据量,把数据量少的表放入内存中,制作map端的join 应该将条目少的表/子查询放在 Join 操作符的左边.原因是在 Join  ...

Windows 7您的凭据不工作

假设计算机A要远程连接到计算机B 一.参考链接 http://jingyan.baidu.com/article/148a1921a807d34d70c3b143.html 在计算机B上操作 快捷键 ...

Linux 执行partprobe命令时遇到Unable to open /dev/sr0 read-write (Read-only file system)

在使用fdisk创建分区时,我们会使用partprobe命令可以使kernel重新读取分区信息,从而避免重启系统,但是有时候会遇到下面错误信息"Warning: Unable to open ...

iLinuxBot: Designing Botnets to Manage Linux Clients

转:http://www.linuxforu.com/2012/05/ilinuxbot-designing-botnets-to-manage-linux-clients/ By Nishant S ...

[译]TCP和UDP的区别

译者:华科小涛:http://www.cnblogs.com/hust-ghtao/ 最近开始学习计算机网络的知识,找了些英文的资料,翻译过来,一是为了深入学习网络,也是为了锻炼自己看英文文档的能力. ...

EBS技术开发之返利开发

返利是指公司间应收款项按一定比率的返还给客户.返利开发实质就是实现对应收发票的更改和新增(暂时我的理解) 一.对发票行更改 PACKAGE AP_INVOICE_LINES_ALL_PRIVATE I ...

基于Cloudera Search设计数据灾备方案

当实际项目上线到生产环境中,难以避免一些意外情况,如数据丢失.服务器停机等.对于系统的搜索服务来说,当遇到停机的情况意味着在停机这段时间内,用户都不能通过搜索的相关功能进行访问数据,停机意味着将这一段 ...

一个简单的定向python爬虫爬取指定页面的jpg图片

import requests as r import re resul=r.get("http://www.imooc.com/course/list") urlinfo=re. ...

使用 Charles 抓取 App 网络请求

最近开发App的时候需要用到大量其他应用的数据,但接口不公开,所以想到了抓取.差不多要读到5W的用户数据,采用的是找到数据接口,然后不停发请求的方式.用到的抓取工具是Charles,本文讲解的应用是W ...

HTML&javaSkcript&CSS&jQuery&ajax(三)

一.HTML块元素 1.块级元素 Block level element ,内联元素 inline element , HTML

元素属于块级元素,他是组合其他HTML元素的容器, ...

python画红蓝相间同心圆_Python 实现的、带GUI界面的词云生成器相关推荐

  1. python界面gui随机生成器_Python 实现的、带GUI界面的词云生成器

    详细说明: "词云"就是数据可视化的一种形式,给出一段文本,根据文本中词语的出现频率而生成的一幅图像,从而过滤掉大量的文本信息,人们只要扫一眼就能够明白文章主旨,使得数据分析的结果 ...

  2. python词云去除词_使用Python制作一个带GUI界面的词云自动生成工具(连载五)

    上一篇中我们介绍了自动生成词云工具(GUI)中数据清洗界面的实现过程(详解词云自动生成工具的数据清洗界面制作过程(连载四)),了解掌握了Grid.Pack混合布局的方法.本篇我们将讨论Python自动 ...

  3. python color属性_使用Python制作一个带GUI界面的词云自动生成工具(连载七)

    前几篇向大家介绍了词云自动生成工具(GUI)的详解GUI词云自动生成工具中词云属性设置界面的实现(连载六).通过前面内容我们基本构建出了词云自动生成工具的主要框架.本篇结合tkinter中的filed ...

  4. python制作软件界面_使用Python制作一个带GUI界面的词云自动生成工具(一)

    在现实生活中你可能会遇到这种情况:想知道一篇论文中哪个词语最多,哪些词语最少(以此判断文章的主要内容):想知道一部小说中哪一个人物出现的次数最多(当然,出现次数最多的那个人也不一定是主脚):想知道一部 ...

  5. 用python画颗爱心祝生日快乐_Python 一键生成漂亮的生日快乐词云!

    前段时间写了几篇关于生成词云的文章,其中包括: 等等,但是这几篇文章的转化对象都必须是多词汇组成的,也就是说他们生成词云的条件是词组必须够多,只有一两个词的话无法生成完整词云. 最近遇到许多朋友有特殊 ...

  6. Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面

    Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面 from tkinter import * from tkinter import messagebox 导入提示框 from ...

  7. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下: http://www.demodashi.com/demo/14588.html ##详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从 ...

  8. Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序

    Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序 一.项目背景 电影逐渐成为人们生活的不可或缺的一部分,而了解一部电影的可以通过电影评分与大众推荐度,但以上的方式都太过于片面, ...

  9. python使用爬虫写一个自己的翻译器(带图像界面)

    python使用爬虫写一个自己的翻译器(带图像界面)   大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为 ...

  10. python爬取bilibili弹幕_python爬虫:bilibili弹幕爬取+词云生成

    如果你懒得看下边的文字,我录了一个完整的教学视频在b站上. 我的B站教学:https://www.bilibili.com/video/av75377135?p=2 工作原理 b站是提供弹幕接口的,所 ...

最新文章

  1. sql server management studio 查询的临时文件路径
  2. oracle字符串使用函数,Oracle常用函数介绍之一(字符串)
  3. ansible 基本操作(初试)
  4. android wear 同步应用,Android Wear发布 突出语音及同步功能
  5. 调查了 10,975 位 Go 语言开发者,我们有了这些发现!
  6. 重磅 | Windows 10内部版本及核心源代码泄露,一共32TB
  7. Edraw Max 9.x 安装
  8. 无人机项目跟踪记录七十七----蓝牙模块详解
  9. 参考文献标号字体_论文格式要求及字体大小
  10. stm32Cubemx(8):RTC和RTC唤醒中断
  11. 解决CentOS7 安装后无法识别windows分区问题
  12. 电脑出现我们在加载您的信息流时遇到了问题
  13. 微信公众号如何上传html5,微信平台公众号怎么上传视频? 视频支持哪些格式
  14. ArduCopter——ArduPilot——航点导航WPNav(一)
  15. 区块链的未来:“2020年起3-5年:国内区块链大规模商业应用将全面落地开花”
  16. 古诗文网站之网络爬虫
  17. 2021年哪些办公软件比较好用?
  18. ESP8266 web配网微信小程序配网 全平台配网库 arduino 傻瓜式通用库
  19. Java开发工程师需要掌握哪些技能?
  20. 计算机病毒辽师大教案,四年级下信息技术教案计算机病毒知识二辽师大版.docx...

热门文章

  1. c4d安装没有出现语言文字,关于C4D以及渲染器插件安装时遇到的问题以及解决方法...
  2. php spider视频教程,phpspider的简单使用
  3. opencv学习笔记(三)颜色转换 cvtColor
  4. 百度网盘不限速下载方法全解(验证、体会、转载)
  5. 深海迷航坐标传送代码_深海迷航全控制台代码汇总 深海迷航物品作弊码大全...
  6. 反向传播(Backpropagation)算法详解
  7. 网页设计大作业-五子棋游戏,可以进行双人对弈
  8. vue面试题+答案,2021前端面试
  9. MySQL数据库事务实例(模拟银行转账)
  10. 模2除法(CRC校验码计算)模2除法和算数除法不同,文中例子120/13用模2除法结果:商11余数7,而算数除法结果:商9余数3