文章目录

  • 前言
  • 程序
    • 1. 读取文件
    • 2. 词频统计
    • 3. 生成词云图
    • 4. main函数以及导入的包
  • 结果
    • 1. 词频统计
    • 2. 词云图

前言

词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,使人一眼就可以领略文本数据的主要表达意思。
下面就用Python借助wordcloud库生成指定图形形状的词云图,并对数据进行统计。代码等相关文件可以去我的GitHub网站下载。

程序

1. 读取文件

def read_file(file_name):if os.path.exists(file_name):  # 判断文件是否存在with open(file_name, "r", encoding='utf-8') as file:  # 读取文件content = file.read()if content:  # 判断文本内容是否为空return contentelse:print("文件无内容")else:print(file_name, "文件不存在")

2. 词频统计

def statistics_words(content, number, word_statis_name):not_statis = ['也', '我', '着', '那', '这', '了', '你', ':', ':', '?', '!', '...', '…', '他', '她', '?', ',', '、', '。', '的', '和', '\u3000', '“', '”', ' ', 'ri', '与', '是', '在', '中', '了', '\n']words = list(jieba.lcut(content))statistics = Counter(words).most_common(number)dic = {key: value for (key, value) in statistics}for i in list(dic.keys()):if i in not_statis:dic.pop(i)label = list(dic.keys())N = len(dic)theta = np.arange(0.0, 2*np.pi, 2*np.pi/N)radii = list(dic.values())width = np.pi/6ax = plt.subplot(111, projection='polar')bars = ax.bar(theta, radii, width=width, bottom=0.0)plt.xticks(theta+np.pi/12, label)for r, bar in zip(radii, bars):bar.set_facecolor(plt.cm.viridis(r / 10.))bar.set_alpha(0.5)plt.savefig(word_statis_name)plt.show()

3. 生成词云图

def generate_word_cloud_illustration(content, figure_name, result_name):cut_text = jieba.cut(content)words = " ".join(cut_text)  # 拼接img = np.array(Image.open(figure_name))  # 读取图片img_colors = ImageColorGenerator(img)wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white")# wd.generate(words)wd.generate_from_text(words)plt.imshow(wd.recolor(color_func=img_colors), interpolation="bilinear")plt.axis("off")plt.savefig(result_name)plt.show()

4. main函数以及导入的包

import os
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image  # 导入PIL模块中的Image对象
import jieba           # 导入中文分词组件
import wordcloud       # 导入词云模块
from wordcloud import ImageColorGenerator
from collections import Counter
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签if __name__ == '__main__':#file_name = "story.txt"     # 预读取文本文件名file_name = 'zhuxian.txt'figure_name = "map.png"     # 词频图形状图片文件名result_name = 'result.png'  # 保存的词云图文件名word_statis_name = "word_statistics"  # 词频统计绘制的雷达图文件名content = read_file(file_name)        # 读取文件statistics_words(content, 35, word_statis_name)  # 词频统计并绘制雷达图generate_word_cloud_illustration(content, figure_name, result_name)  # 生成词云图

结果

1. 词频统计

2. 词云图

Python绘制词云图并统计词频相关推荐

  1. python绘制词云图转换图_(数据科学学习手札71)利用Python绘制词云图

    1 简介 词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词: 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

  2. Python绘制词云图

    1.用到的一些包,如下 import jieba import collections import re from pyecharts.charts import WordCloud from py ...

  3. 用Python绘制词云图——表白为我们拼过命的白衣天使

      每天都听说医生和冠状病毒抗战的感人事迹,有那么多的医生因为保护我们,献出了自己的生命.希望逝者安息,活者坚强,所有健在的医生和我国同胞万众一心,早日战胜病毒.静待春暖花开,万物复苏.   今天我就 ...

  4. 实战|Python轻松实现绘制词云图(附详细源码)

    项目背景虽然现在已经有很多现成的制作词云图的工具了,但一般存在以下几个问题:问题一:工具太多,眼花缭乱,质量参差不齐,选择困难症: 问题二:大多词云工具或多或少有一些限制,自定义的空间有限:问题三:有 ...

  5. 对中国四大名著--红楼梦 使用jieba进行分词处理 排除去停词 统计完整词频并按降序排列 前20词绘制词云图

    文章目录 前言 一.jieba是什么? 支持四种分词模式: 支持繁体分词 支持自定义词典 MIT 授权协议 二.直接上代码了 总结 前言 今天用jieba和词云库做个作业,顺便记录一下,作业要求: 1 ...

  6. python画字符形状的词云图_python根据词频字典或字符串绘制词云图

    由于工作需要,要根据现有的新闻数据统计词频,绘制词云图,比较擅长python,因此没有用可以生成云图的网页工具.由于我的数据量比较大,因此根据字符串自动进行统计并绘制云图的方式并不适合我.我需要手动从 ...

  7. 根据词频、背景图绘制词云图

    根据词频.背景图绘制词云图 记录一下绘制词云图的过程 首先说明一下,绘制词云图完整的过程应如下: 获取一段文本,也就是要根据这个文本来绘制词云图 制作停用词词典,简单来说,停用词就是分词的规则,例如, ...

  8. Python爬取《哆啦A梦-伴我同行2》影评,手把手带你绘制词云图!

    本文简介 <哆啦A梦:伴我同行2>是纪念<哆啦A梦>50周年的作品之一,于2021年5月28日在中国内地上映. 哆啦A梦系列,是陪伴我,乃至陪伴了几代人成长的故事.50年来,藤 ...

  9. python中文词云图代码_python绘制中文词云图

    1. 明确任务 最近学习过程中看到很多分析报告中都有运用到可视化的词云,也有看到五花八门的工具教程,刚好有一份<都挺好>电视剧的弹幕源数据.便决定用这份数据尝试使用python绘制词云. ...

最新文章

  1. python网络爬虫程序技术,Python网络爬虫程序技术
  2. 安装asp.net mvc4后mvc3项目编译报错
  3. 面相对象的topSort和递推【ural1022/ural1017】
  4. 使用ifstream和getline读取文件内容[c++]
  5. 直播预告丨Oracle DataGuard 备份恢复最佳实践
  6. linux 监控java内存_Linux下实用的JAVA内存泄露监控命令及工具
  7. Egret开发HTML5小游戏代码分享
  8. Loadrunner报错“Too many local variablesAction.c”解决方法
  9. mobile webiste 中的css的font-size em及line-height等换算
  10. android context继承关系,Android - 认识Context
  11. C#如何控制Windows关机
  12. 大数据错题库(微信群Bug整理)
  13. 2017山东省ACM省赛总结(校史首金!!)
  14. 让FireFox火狐支持迅雷精简版
  15. 计算机实验室建设论证报告,计算机实验室实习报告-报告.doc
  16. lora终端连接云服务器_云服务器如何连接LoRa网关
  17. spark编程:DataFrame和SQL编程基础-2
  18. wincc随机数的生成
  19. PPT中含图片太大,需压缩
  20. 微信小程序记录与项目实践

热门文章

  1. 算法题:求两个单链表相交的第一个节点
  2. 百度dueros人工智能-RDA5981(R01开发板)-学习心得-安装SDK(dueros的MbedOS系统)
  3. 要多久人工智能的梦想才能照进现实
  4. 求介绍一款实用的工作任务管理软件,具有进度管理、自动提醒等功能
  5. 主板上Usb线序规则
  6. win10安装CP2102(STM32串口通信)驱动
  7. 管理Ansible配置文件
  8. MTK 4G核心板MT6771可做什么方案?
  9. ubuntu18.04卸载cuda11.3安装cuda10.2
  10. kindeditor 上传视频mp4