Python WordCloud 文本分析 生成词云图

环境准备

  • Python, pip安装配置;

  • 安装依赖的包(使用-i url指定要使用的镜像源,加快下载速度)

pip install wordcloud scipy jieba

如果下载速度太慢,加参数-i https://pypi.tuna.tsinghua.edu.cn/simple使用国内镜像下载即可。

  • 文件准备:
    1. 要分析的文本文件(当然也可以在代码中直接写字符串)。
    2. 中文字体文件(必须设置,否则中文词云图会显示小方块样式的乱码)
      可以在Windows系统中搜索.ttf结尾的,便是字体文件,我选的是simfang.ttf
    3. 背景文件
      默认会生成矩形图片(文字为彩色),如果想生成指定样式的词云(包括重设颜色),可以通过mask设置背景。
      我下载了:https://tse2-mm.cn.bing.net/th/id/OIP.D_Gm8IGCvkqmOgtU2hueVwHaHS?pid=Api&rs=1
      github logo

Code

注意相对路径和绝对路径。

如果使用的相对路径加载文件,执行该py脚本的时候,应该先cd到该脚本所在目录,然后:

python test-wordcloud.py

test-wordcloud.py

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

# 要分析的文本文件的路径
text_file_paths = "余华-活着.txt"
# 自定义词云背景图片的路径(可不设置)
mask_file_path = "bg.jpg"
# 中文字体路径
font_path = "C:\Windows\WinSxS\amd64_microsoft-windows-font-truetype-simfang_31bf3856ad364e35_10.0.18362.1_none_5a7f93f39ed619f0\simfang.ttf"
# 要生成的结果路径
result_file_path = "result.jpg"

mask_img = plt.imread(mask_file_path)

with open(text_file_paths, "r", encoding="UTF-8") as f:
    text = f.read()

wordlist_after_jieba = jieba.cut(text, cut_all=True)
wl_space_split = " ".join(wordlist_after_jieba)

wc = WordCloud(
    background_color="white",
    font_path=font_path,
    # mask=mask_img,    # 是否自己指定的背景图片
    prefer_horizontal=0.9,  # 词语水平展示的比例
    width=500,
    height=300,
    scale=10,
    max_words=500,
    relative_scaling=0.5,
    stopwords=STOPWORDS,
    max_font_size=70,
    collocations=False,
    min_word_length=2,
)
wc.generate(wl_space_split)

# 自定义图片背景形状、颜色
# image_colors = ImageColorGenerator(mask_img)
# wc.recolor(color_func=image_colors)

# 写入到图片文件中
wc.to_file(result_file_path)

# 显示图片
plt.imshow(wc)
plt.axis("off")
plt.show()

结果文件

  1. 不配置中文字体文件,出现小方块乱码:
    在这里插入图片描述

  2. 配置中文字体后:

在这里插入图片描述

  1. 自己指定背景图片后(该图片的宽高会覆盖我们的给词云的width height配置):
    在这里插入图片描述

  2. 自己指定图片的颜色方案:
    在这里插入图片描述

Links

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值