目錄
詞云圖
詞云圖系列模板
固定模式詞云圖
自定義文字樣式
一鍵化詞云案例(輸入文本儲存路徑即可一鍵化生成詞云圖!!!!)
每文一語
詞云圖
什么是詞云圖,相信大家肯定不會感到陌生,一本書統計里面出現的詞頻,然后可視化展示,讓讀者快速的了解這個主題綱要,這就是詞云的直接效果,
詞云圖系列模板
固定模式詞云圖
修改一些引數可以修改詞云的輪廓,我覺得這個是最方便的詞云,一鍵化不需要你去找其他的底圖,設定一些引數,
#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()


那么有時候我們需要自己去定義一個圖片展示,由于這個自定義的是我們需要使用另外一個庫,所以我在這里就不做過多的演示了,我將會在下一篇文章詳細的介紹自定義的圖片方法,
每文一語
加油!皮卡丘!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/262928.html
標籤:python
