Python绘制词云图之可视化神器pyecharts(一)

目录

 

词云图

词云图系列模板

固定模式词云图

自定义文字样式

一键化词云案例(输入文本储存路径即可一键化生成词云图!!!!)

每文一语


词云图

什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲要,这就是词云的直接效果。

词云图系列模板

固定模式词云图

修改一些参数可以修改词云的轮廓,我觉得这个是最方便的词云,一键化不需要你去找其他的底图,设置一些参数。


#shape词云图轮廓,有’circle’, ‘cardioid’, ‘diamond’, ‘triangleforward’, ‘triangle’, ‘pentagon’, ‘star’可选
 

import pyecharts.options as opts
from pyecharts.charts import WordCloud

#省略部分数据

data = [
    ("生活资源", "999"),
    ("供热管理", "888"),
    ("供气质量", "777"),
    ("生活用水管理", "688"),
    ("一次供水问题", "588"),

]


(
    WordCloud()
    .add(series_name="热点分析", data_pair=data, word_size_range=[6, 66])
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
        ),
        tooltip_opts=opts.TooltipOpts(is_show=True),
    )
    .render("词云图.html")
)

Python绘制词云图之可视化神器pyecharts(一)_第1张图片

 

自定义文字样式

from pyecharts import options as opts
from pyecharts.charts import WordCloud

words = [
    ("花鸟市场", 1446),
    ("汽车", 928),

]

c = (
    WordCloud()
    .add(
        "",
        words,
        word_size_range=[20, 100],
        textstyle_opts=opts.TextStyleOpts(font_family="cursive"),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-自定义文字样式"))
    .render("自定义文字样式.html")
)

 

Python绘制词云图之可视化神器pyecharts(一)_第2张图片

 

一键化词云案例(输入文本储存路径即可一键化生成词云图!!!!)

我们知道pyecharts里面需要填写数据,那么首先就必须分词,之前我写过一个智能分词程序,一键化只需要把文本放入即可,下面送给大家。

from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
import jieba  # jieba用于分词,中文字典及其强大

ll = []
lg = []
lk = []
lj = []
lp = []
li = []
d = {}  # 定义好相应的存储变量


def Open(title):
    with open(r"{}.txt".format(title), encoding="utf-8") as file:
        a = file.read()  # 读取文本,一个一个读取,没有按行读取,如果要按行读取使用readlins()
        b = jieba.lcut(a)  # 分词之后,把值储存到b这个变量
        for x in b:  # 遍历b这个,去除里面的特殊字符
            if x in ",。、;:‘’“”【】《》?、.!…\n":
                continue
            else:  # 分别分出有意义的词组,因为对于一个词的,分析没有太大的意义
                if len(x) == 1:  # 根据中文词组的特点,我们只需要得到2,3,4的词组即可,就可以达到分析目的
                    ll.append(x)  # 存储1词组变量
                elif len(x) == 2:
                    lg.append(x)  # 存储2词组变量
                elif len(x) == 3:
                    lk.append(x)  # 存储3词组变量
                elif len(x) == 4:
                    lj.append(x)  # 存储4词组变量
        for i in lg:
            lp.append(i)  # 存储大于1的词组变量
        for p in lk:
            lp.append(p)
        for f in lj:
            lp.append(f)
        for t in lp:
            li.append(t)  # 存储全部变量
        for y in ll:
            li.append(y)


def cut(choice):
    if choice == 1:
        lp_1 = ll
    elif choice == 2:
        lp_1 = lg
    elif choice == 3:
        lp_1 = lk
    elif choice == 4:
        lp_1 = lj
    elif choice == 5:
        lp_1 = lp
    elif choice == 6:
        lp_1 = li
    else:
        lp_1 = None
        print("输入有误,请重新输入!")
    return lp_1


def sort():
    global choice
    choice = int(input("请输入你的功能选择:"))
    for word in cut(choice):
        # 这里依次取到列表里面的元素,作为字典的键,d.get(word, 0)代表取到的值,也就是出现的次数
        # 如果存在就返回该有的值,如果不存在就返回0,依次递增,比如这个词第一次出现,他没有找到,那么就会默认返回0
        # 但是后面有过+1所以这个词现在就出现1次,如果这个词已经出现了10次,那么get到就会返回10次,但刚刚又出现1次
        # 那么就会+1,所以现在总共出现11次,这个就是标准的词组排序算法
        d[word] = d.get(word, 0) + 1
    ls = list(d.items())  # 把所有的词组出现的次数,赋予了相应的次数之后,接下来就是封装这个元组
    # 利用字典的item()方法,取出所有的值,返回的是一个元组,存放到列表里面,现在列表里面的每一个元素就是一个元组
    # 接下来就是利用列表对里面的元素进行排序处理,利用lambda函数的标准算法,key=lambda 列表里每一个元素:该元素内部里面的第二个元素
    # 对该元素进行排序(数字),默认False是从小到大,这里我们需要从大到小,所以需要参数:reverse=True
    ls.sort(key=lambda x: x[1], reverse=True)
    # 如果列表里面不是之前那样的标准形式,那么就按照下面的方法进行
    # for a in ls:
    #     words.append((a[0],a[1]))
    return ls


def main():
    try:
        print("C:\\Users\\48125\\Desktop\\")
        title = input("请输入文本文件的路径及名称(注意不要写错了!):")
        Open(title)
        print("\n分词完毕!")
        print('''\n\n\t     一键词云算法生成器
        \t1--生成一词组的词云图
        \t2--生成二词组的词云图
        \t3--生成三词组的词云图
        \t4--生成四词组的词云图
        \t5--生成大于1词组的词云图(研究常用)
        \t6--生成全部词组的词云图(包含所有类型的词组)
        ''')
        num = int(input("请输入本次展示的词语数量(最好不超过100):"))
        data = sort()[:num]
        Str = input("请输入这个词云图的标题:")
        print("词云图已经生成完毕,请查收!")
        print("感谢您对本程序的使用,欢迎下次光临!!")
        c = (
            WordCloud()
                .add(
                "",
                data,  # 数据集
                word_size_range=[20, 100],  # 单词字体大小范围
                shape=SymbolType.DIAMOND)  # 词云图轮廓,有以下的轮廓选择,但是对于这个版本的好像只有在提示里面选
                # circl,cardioid,diamond,triangle-forward,triangle,start,pentagon
                .set_global_opts(title_opts=opts.TitleOpts(title="{}".format(Str)),
                                 toolbox_opts=opts.ToolboxOpts())  # 工具选项
                .render("{}词云制作{}词组.html".format(title, choice))
        )
        return c
    except:
        print("无法找到,请检查你的输入!")


if __name__ == "__main__":
    main()

 

 

Python绘制词云图之可视化神器pyecharts(一)_第3张图片

 

 

那么有时候我们需要自己去定义一个图片展示,由于这个自定义的是我们需要使用另外一个库,所以我在这里就不做过多的演示了,我将会在下一篇文章详细的介绍自定义的图片方法。

 

每文一语

加油!皮卡丘!!!!

 

 

 

你可能感兴趣的