相信大家都會用wordcloud畫詞雲吧,不但可以自定義形狀,還可以根據圖片制定配色,做出一張非常漂亮的靜態詞雲圖。但是如果想做動態的詞雲,還是用pyecharts的WordCloud更方便。本文兩種方式都介紹一下,小夥伴們可以根據需求自行選擇。
(前情提要)我爬了拉勾網搜索“設計”職位的招聘信息,Python爬蟲獲取拉勾網招聘信息詳見。並用pyecharts畫了地圖Geo,Map,條形圖以及餅圖。詳見拉勾網“設計”職位數據分析之用pyecharts畫地圖Geo,Map,拉勾網“設計”職位數據分析之用pyecharts畫條形圖Bar,拉勾網“設計”職位數據分析之用pyecharts畫餅圖(南丁格爾圖玫瑰圖)Pie
import imageio
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
%matplotlib inline
from wordcloud import WordCloud, ImageColorGenerator
import jieba
import jieba.analyse
這裏一定要強調一下,用matplotlib畫圖不顯示中文的話,一定要加上這句plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
試了很多方式都不成功,還是顯示方塊塊,加上這句瞬間治癒!牆裂安利臉!
df = pd.read_excel('lagou_sj0309_155511.xlsx')
#將職位需求合併成一個長字符串
needs=[]
for i in df['need']:
needs.append(i)
set_need=str(needs)
#用jieba分詞,將崗位需求切割成詞語
cut = jieba.lcut(set_need)
need_cut=' '.join(cut)
#設置停止詞,刪除跟崗位需求無關的詞
stopwords = ['nan','具備','崗位職責','任職','相關','公司','進行','工作','根據','提供','作品','以上學歷','優先','計算','經驗','學歷','上學','熟練','使用','以上',
'熟悉','能力','負責','完成','能夠','要求','項目','製作','具有','良好','行業','專業','設計','團隊','崗位','優秀','我們','關注'
,'n1','n2','n3','n4','n5','xao','xa0','產品','軟件','n6','視頻','創意','遊戲','需求','視覺','大專','本科','各種','以及','n7','瞭解','職位','結果'
]
#讀取背景圖片
mk = imageio.imread('alice_color.png')
wordcloud = WordCloud(background_color='white',
#設置字體爲中文字體!!!
font_path="/Library/Fonts/Songti.ttc",
#設置清晰度
scale=15,mask=mk,stopwords=stopwords).generate(need_cut)
image_colors = ImageColorGenerator(mk)
#將圖片顏色應用到詞雲中
wc_color = wordcloud.recolor(color_func=image_colors)
wc_color.to_file('ciyun.png')
plt.imshow(wc_color)
真的很漂亮吧哈哈哈哈,這裏強調一下,一定一定要在WordCloud()里加上這句話font_path="/Library/Fonts/Songti.ttc"
設置字體爲中文字體!!!下面再來用pyecharts畫一個詞雲
needs=[]
for i in df['need']:
needs.append(i)
set_need=str(needs).replace('n1',"").replace('n2',"").replace('n3',"").replace('n4',"").replace('n5',"").replace('n6',"").replace('n7',"").replace('n',"")
cut = jieba.lcut(set_need)
need_cut=' '.join(cut)
#設置停止詞,刪除跟崗位需求無關的詞
stopwords = ['nan','具備','崗位職責','任職','相關','公司','進行','工作','根據','提供','作品','以上學歷','優先','計算','經驗','學歷','上學','熟練','使用','以上',
'熟悉','能力','負責','完成','能夠','要求','項目','製作','具有','良好','行業','專業','設計','團隊','崗位','優秀','我們','關注'
,'xa0','產品','軟件','n6','視頻','創意','遊戲','需求','視覺','大專','本科','各種','以及','n7','瞭解','職位','結果'
]
jieba_need = jieba.analyse.extract_tags(set_need, topK=80, withWeight=True)
jieba_result=[]
for i in jieba_need:
if i[0] not in stopwords:
jieba_result.append(i)
c = (
WordCloud(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add("", jieba_result, word_size_range=[20, 100],shape=SymbolType.RECT)
.set_global_opts(title_opts=opts.TitleOpts(title="崗位需求"))
)
c.render('崗位需求.html')
生成的HTML可以動,很抓眼球,但是配色不太好看,官方文檔說支持自定義背景,但是我沒有成功,大家可以去官網參考一下,或者在評論區指點一二就更完美啦