数据可视化(一)——wordcloud词云

本篇博客将从词云基础,到实现一个词云实例

一、安装及介绍
  • 首先,wordcloud 肯定需要相关的安装包。这里我们需要用到:
from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

需要注意的几个问题:
jieba 是用来处理中文分词的。如果你的词云中不是中文,则不用导入
from scipy.misc import imread 这里可能会报错,解决办法是 :scipy降级到1.2.1 pip install scipy==1.21
安装 wordcloud 时,可能会因为网络限制导致安装失败
Matplotlib是一个 Python 的 2D数学绘图库

  • wordcloud 库介绍
    词云以词语为基本单位更加直观和艺术的展示文本,例如百度中的大数据图片:
    数据可视化(一)——wordcloud词云_第1张图片
    wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
二、wordcloud 基本使用
  • 总的来说,生成一个漂亮的词云文件三步就可以完成。即:1、配置对象参数 2、加载词云文本 3、输出词云文件 (如果不加说明默认的图片大小为400 * 200)
    最简单大概就是这样,当然还会有一些补充的:
from wordcloud import WordCloud

# 1、配置对象参数
wc = WordCloud()
# 2、加载词云文本
wc.generate("I love China")
wc.to_file("pic.png")

生成的图片是这样的:
数据可视化(一)——wordcloud词云_第2张图片

  • wordcloud 常规方法:
    数据可视化(一)——wordcloud词云_第3张图片
  • wordcloud做词频统计分为以下几个步骤:

1 、分隔:以空格分隔单词 2、统计 :单词出现的次数并过滤 3、字体:根据统计搭配相应的字号 4 、布局
常用的参数:
数据可视化(一)——wordcloud词云_第4张图片

三、《围城》实例

看了《围城》,所以想把它的词云提取出来

  • txt文件
    词云肯定需要词,所以我们首先需要一个txt 文件,这里我是放在 siege_text.txt 中
  • 停用词
  • 遮罩图片
    我们生成的词云只是方方的肯定不好看,想让它有一定的形状,就需要遮罩图

最后生成的图片(停用词还不够好):
数据可视化(一)——wordcloud词云_第5张图片

代码如下:

from os import path
from scipy.misc import imread
import matplotlib.pyplot as plt
import jieba
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

stopwords = {}


def importStopword(filename=''):
    '''
    导入停用词
    :param filename: 读入停用词txt文本数据
    :return:把文件中的词添加到 stopwords中
    '''
    global stopwords
    f = open(filename, 'r', encoding='utf-8')
    line = f.readline().rstrip()
    while line:
        stopwords.setdefault(line, 0)
        stopwords[line] = 1
        line = f.readline().rstrip()

    f.close()


def processChinese(text):
    '''
    将中文文本分词
    :param text: 未分词的文件
    :return: 分词后的
    '''
    seg_generator = jieba.cut(text)
    seg_list = [i for i in seg_generator if i not in stopwords]
    seg_list = [i for i in seg_list if i != u' ']
    seg_list = r' '.join(seg_list)
    return seg_list


importStopword(filename='./stopwords.txt')

# 获取当前文件路径,__file__ 为当前文件
d = path.dirname(__file__)
text = open(path.join(d, 'siege_text.txt'), encoding='GBK').read()
# 如果是中文,使用Jieba分词进行;如果是英文,可以把这行注释掉
text = processChinese(text)

# 设置背景图片
back_coloring = imread(path.join(d, "./image/love.jpg"))
print("加载图片成功!")

# 1、配置对象
# WordCloud默认不支持中文,所以这里需已下载好的中文字库
# 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
wc = WordCloud( font_path='./font/叶立群几何体.ttf',
                background_color="white",
                max_words=2000,
                mask=back_coloring,
                random_state=42,
                )

# 2、生成词云
wc.generate(text)

# 从背景图片生成颜色值
image_colors = ImageColorGenerator(back_coloring)

plt.figure()
# 以下代码显示图片
plt.imshow(wc)
plt.axis("off")
plt.show()
# 绘制词云

# 3、保存图片
wc.to_file(path.join(d, "生成图.png"))
print("生成词云成功!")

你可能感兴趣的:(爬虫)