目录
词云图
词云图系列模板
固定模式词云图
自定义文字样式
一键化词云案例(输入文本储存路径即可一键化生成词云图!!!!)
每文一语
什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲要,这就是词云的直接效果。
修改一些参数可以修改词云的轮廓,我觉得这个是最方便的词云,一键化不需要你去找其他的底图,设置一些参数。
#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")
)
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")
)
我们知道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()
那么有时候我们需要自己去定义一个图片展示,由于这个自定义的是我们需要使用另外一个库,所以我在这里就不做过多的演示了,我将会在下一篇文章详细的介绍自定义的图片方法。
加油!皮卡丘!!!!