Python绘制词云图

1.用到的一些包,如下

import jieba
import collections
import re
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
from pyecharts import options as opts
from pyecharts.globals import ThemeType

如果在运行中提示你没有的包,可以使用下面的镜像链接在cmd窗口下安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts

2.核心代码及必要的注释

# 定义删词函数,删除分词结果中的无用词汇
def deal_txt(seg_list_exact):
    result_list = []
    # 读取需要删去的词文本,文本可为空,代表无删除的词汇,注意改路径
    with open('D:\\Desktop\\deal_words.txt', encoding='utf-8') as f:
        content = f.readlines()
        deal_words = set()
        for i in content:
            i = i.replace("\n", "")  # 去掉读取每一行数据的\n
            deal_words.add(i)
    for word in seg_list_exact:
        # 删除不要的词汇
        if word not in deal_words and len(word) > 1:
            result_list.append(word)
    print(result_list)
    return result_list

# 渲染词云函数
def render_cloud(word_counts_top100):
    word1 = WordCloud(init_opts=opts.InitOpts(width='1350px', height='750px', theme=ThemeType.MACARONS))
    # series_name参数设置系列名称,用于tooltip的显示,legend的图例筛选
    # data_pair参数是系列数据项,数据格式如[(word1, count1), (word2, count2)]这样
    # word_size_range参数设置单词字体大小范围
    # shape参数设置词云图轮廓,有'DIAMOND','TRIANGLE'等可选
    word1.add(series_name='词频统计', data_pair=word_counts_top100, word_size_range=[15, 100],
              textstyle_opts=opts.TextStyleOpts(font_family='cursive'), shape=SymbolType.TRIANGLE)
    # title_opts参数是词云图标题名的设置
    # tooltip_opts参数是鼠标放在词云图上时词频统计的提示框设置
    word1.set_global_opts(title_opts=opts.TitleOpts('词云图'),
                          toolbox_opts=opts.ToolboxOpts(is_show=True, orient='vertical'),
                          tooltip_opts=opts.TooltipOpts(is_show=True, background_color='blue', border_color='yellow'))
    # 渲染在html页面上,你也可以保存为jpg、png图片形式
    word1.render("D:\\Desktop\\词云图.html")

# 主函数
if __name__ == '__main__':
    # 读取分词文本文件
    with open('D:\\Desktop\\content.txt', encoding='utf-8') as f:
        data = f.read()
    # 文本预处理,去除一些无用的字符,使用正则表达式只提取出中文出来
    new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S)
    new_data = " ".join(new_data)
    # 利用jieba分词将整句切成分词
    seg_list_exact = jieba.cut(new_data, cut_all=True)
    # 删除无用词汇
    final_list = deal_txt(seg_list_exact)
    # 筛选后统计
    word_counts = collections.Counter(final_list)
    # 获取前100最高频的词
    word_counts_top100 = word_counts.most_common(100)
    # 打印出来看看统计的词频
    print(word_counts_top100)
    # 展示前一百词汇的词云图
    render_cloud(word_counts_top100)

3.两万字共产党宣言词云图结果展示

共产党宣言链接:百度安全验证

分词结果及前一百词频展示如下:

 词云图展示如下:

Python绘制词云图_第1张图片

 Python绘制词云图_第2张图片

 一目了然啊,阶级斗争是主旋律,愿我们都是无产阶级。

 

你可能感兴趣的:(Python,数据可视化,python,正则表达式,词云图)