当前位置: 主页 > Python语言

python 绘制词云图-python 词云图形状

发布时间:2023-02-08 14:07   浏览次数:次   作者:佚名

有没有办法一眼就知道一篇很长的文章是关于什么的?

词云图就是为了这个目的,就像下图,

词云

是不是第一眼就看到了“数据、分析、功能”的概念?

那么这种画面是如何制作出来的呢? 这很简单。 下面我就带大家一步步制作这张图。

01 准备工作

首先安装python(我用的是3.6版)。 具体安装方法请参考文末链接。

下载几个扩展库

(在OS下执行以下语句,去掉#和后面的备注)

pip install re # 正则表达式库

pip install collections #词频统计库

pip install numpy # numpy数据处理库

pip install jieba # jieba 分词

pip install wordcloud #词云展示库

pip install PIL # 图像处理库

pip install matplotlib.pyplot #图像显示库

准备好你打算统计的文件,命名为article.txtpython 绘制词云图,保存在与程序文件相同的目录下

准备一张背景图片,命名为wordcloud.jpg,保存在与程序文件相同的目录下

02 编写代码

打开一个空的python文件,命名为wordcount.py,输入以下代码

#导入扩展库

import re#正则表达式库

import collections # 词频统计库

import numpy as np # numpy数据处理库

import jieba #结巴分词

import wordcloud #词云展示库

from PIL import Image #图像处理库

import matplotlib.pyplot as plt # 图像显示库

# 读取文件

fn = open('article.txt') # 打开文件

string_data = fn.read() # 读取整个文件

fn.close() # 关闭文件

# 文本预处理

pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') # 定义正则表达式匹配模式

string_data = re.sub(pattern, '', string_data) # 移除匹配模式的字符

# 文本分割

seg_list_exact = jieba.cut(string_data, cut_all = False) #精确模式分词

对象列表 = []

remove_words = [u'of',u',',u'and',u'is',u'with',u'for',u'to',u'etc',u'can',u '两者都',你'。 ',u' ',u', ',u'in',u'in',u'',

u'usually', u'if', u'we', u'rerequired'] # 自定义删除词库

for word in seg_list_exact: # 循环读取每个单词

if word not in remove_words: # 如果不在remove词库中

object_list.append(word) # 添加分词到列表中

# 词频统计

word_counts = collections.Counter(object_list) # 做分词词频统计

word_counts_top10 = word_counts.most_common(10) # 获取前10个出现频率最高的单词

print (word_counts_top10) # 输出检查

# 词频显示

mask = np.array(Image.open('wordcloud.jpg')) # 定义词频背景

wc = wordcloud.WordCloud(

font_path='C:/Windows/Fonts/simhei.ttf', #设置字体格式

mask=mask, # 设置背景图片

max_words=200, # 显示最大字数

max_font_size=100 # 最大字体大小

)

wc.generate_from_frequencies(word_counts) # 从字典生成词云

image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图像创建配色方案

wc.recolor(color_func=image_colors) # 设置词云颜色为背景图片方案

plt.imshow(wc) # 显示词云

plt.axis('off') # 关闭轴

plt.show() # 显示图像

03跑步

如果一切正常python 绘制词云图,输出将如下所示:

词云图输出结果