Author:AXYZdong 自動化專業 工科男
有一點思考,有一點想法,有一點理性!
定個小小目標,努力成爲習慣!在最美的年華遇見更好的自己!
CSDN@AXYZdong,CSDN首發,AXYZdong原創
唯一博客更新的地址爲: 👉 AXYZdong的博客 👈
▲ 果然 @全體成員 最多
Python大數據搜索
1. 前言
對我這篇文章 【Python製作詞雲】分析QQ羣聊信息,記錄詞頻並製作詞雲 的一個優化。
2. 增加代碼
from matplotlib import colors
#建立顏色數組,可更改顏色
color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',
'#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']
#調用
colormap=colors.ListedColormap(color_list)
ListedColormap(colors[, name, N])
從顏色列表生成的Colormap對象。
更詳細的信息可以 點此跳轉
在設置詞雲樣式中增加了一行代碼:colormap=colormap, # 設置文字顏色
## 設置詞雲樣式
wc = WordCloud(
background_color='white', # 設置背景顏色
mask=backgroud_Image, # 設置背景圖片
font_path='C:\Windows\Fonts\simfang.ttf', # 若是有中文的話,這句代碼必須添加,不然會出現方框,不出現漢字
max_words=2000, # 設置最大現實的字數
stopwords=STOPWORDS, # 設置停用詞
colormap=colormap, # 設置文字顏色
max_font_size=150, # 設置字體最大值
random_state=18 # 設置有多少種隨機生成狀態,即有多少種配色方案
)
插播一條反爬蟲信息,讀者可以忽略:
3. 註釋代碼
#img_colors = ImageColorGenerator(backgroud_Image) #改變字體顏色
#wc.recolor(color_func=img_colors) #字體顏色爲背景圖片的顏色
4. 優化後完整代碼
# =============================================
# --*-- coding: utf-8 --*--
# @Time : 2020-06-18
# @Author : AXYZdong
# @CSDN : https://blog.csdn.net/qq_43328313
# @FileName: wc.py
# @Software: Python3.7
# =============================================
import jieba
import re
import collections
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from PIL import Image
import matplotlib.pyplot as plt
file = open("**羣.txt", "r", encoding="utf-8")
one_name = ["***"]
two_name = ["***"]
timepat = re.compile(r"\d{4}-\d{1,2}-\d{1,2}")
#建立顏色數組,可更改顏色
color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',
'#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']
#調用
colormap=colors.ListedColormap(color_list)
## 分析羣聊天記錄,並通過jieba分詞
flag = 0
lines = file.readlines()
one_s = []
two_s = []
for line in lines:
line = line.replace("[圖片]", "")
line = line.replace("[表情]", "")
line = line.replace("\n", "")
if flag == "one":
one_s.append(line)
flag = 0
if flag == "two":
two_s.append(line)
flag = 0
if re.search(timepat, line):
for w in one_name:
if w in line:
flag = "one"
break
for w in two_name:
if w in line:
flag = "two"
break
print(len(one_s))
print(len(two_s))
##print(one_s[0:99])
remove_words = [u'的', u',',u'和', u'是', u'隨着', u'對於', u'對',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
u'通常',u'如果',u'我們',u'需要',u'我',u'你',u'?',u"",u" ",u"就",u"不","啊",
u"吧",u"也",u"不是",u"就是",u"什麼",u"怎麼",u"這個",u"這麼",u"一個"]
k = 0
words = []
for s in two_s:
thelist = jieba.cut(s, cut_all = False)
for word in thelist:
if word not in remove_words:
if len(word) > 1:
words.append(word)
word_counts = collections.Counter(words)
words_top10 = word_counts.most_common(10)
print(words_top10) #打印前10詞頻
## 製作詞雲
backgroud_Image = plt.imread('面紗.jpg') #選擇背景圖片,圖片要與.py文件同一目錄
print('加載圖片成功!')
## 設置詞雲樣式
wc = WordCloud(
background_color='white', # 設置背景顏色
mask=backgroud_Image, # 設置背景圖片
font_path='C:\Windows\Fonts\msyhl.ttc', # 若是有中文的話,這句代碼必須添加,不然會出現方框,不出現漢字
max_words=2000, # 設置最大現實的字數
stopwords=STOPWORDS, # 設置停用詞
colormap=colormap, # 設置文字顏色
max_font_size=150, # 設置字體最大值
random_state=30 # 設置有多少種隨機生成狀態,即有多少種配色方案
)
wc.generate_from_frequencies(word_counts) #通過頻率生成詞雲
print('開始加載文本')
#img_colors = ImageColorGenerator(backgroud_Image) #改變字體顏色
#wc.recolor(color_func=img_colors) #字體顏色爲背景圖片的顏色
plt.imshow(wc) # 顯示詞雲圖
plt.axis('off') # 是否顯示x軸、y軸下標
plt.show()
print('生成詞雲成功!')
詳細解釋請參考 : 【Python製作詞雲】分析QQ羣聊信息,記錄詞頻並製作詞雲
5. 總結
- 利用
matplotlib
中colors
這個類 - 通過對自定義顏色列表的修改,詞雲字體的顏色就會發生改變
- 當然也可以利用背景圖片的顏色作爲字體顏色
本次的分享就到這裏
好書不厭百回讀,熟讀自知其中意。將學習成爲習慣,用知識改變命運,用博客見證成長,用行動證明努力。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請 “點贊” “評論” “收藏”
一鍵三連哦!
聽說 👉 點贊 👈 的人運氣不會太差,每一天都會元氣滿滿呦!^ _ ^ ❤️ ❤️ ❤️
碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了👉關注👈我哦!
更多精彩內容請前往 AXYZdong的博客
如果以上內容有任何錯誤或者不準確的地方,歡迎在下面👇留個言。或者你有更好的想法,歡迎一起交流學習~~~