昨天520,一早上刷朋友圈就是滿滿的狗糧,各種各樣的花式表白,什么程序員寫代碼表白,短視頻表白,微信暗黑模式切換表白.......其實,我們數據分析屆也有我們的專屬表白神器:
詞云圖,比如像下面這樣把微信聊天記錄導出生成詞云圖:
在數據可視化圖表中,詞云圖是一種視覺沖擊力很強的圖表。對輸入的一段文字進行詞頻提取,然后以根據詞匯出現頻率的大小集中顯示高頻詞,簡潔直觀高效。
詞云圖應該怎么做呢,有沒有什么好用的工具?百度一搜會出現各式各樣的詞云圖網站和軟件,國內國外的都有,我體驗了大概20多款,有些在使用上很雞肋,有的要付費表白網站在線生成器,從其中挑選了5種詞云圖的制作工具分享給大家,人人都能學會
1、在線詞云生成工具
網上很多在線詞云生成網站,畢竟在線網站不用下載軟件,用起來快捷方便,對比幾款之后,我感覺這兩個平臺還算相對好用:
優點:不需要注冊就能使用,而且對熱詞數量沒有限制,支持設置字體、形狀等個性化配置,在線詞云支持交互查看。
缺點:操作界面是英文的,這一點比較雞肋,而且是國外網站,網頁加載速度特別慢。只有一種字體支持中文,而且因為權限的問題沒辦法添加本地字體。
制作效果如下,各別中文有亂碼:
微詞云
優點:支持自動文本分析,提供了大量的形狀模板,也支持自定義模板。字體支持種類很多,圖片顏色種類也很多,還有漸變色,操作也比較簡單
缺點:要注冊,免費的圖片有水印,而且對詞匯數量有限制
2、數據分析軟件工具
網頁在線生成工具和桌面軟件做詞云圖本質上都差不多表白網站在線生成器,這里推薦大家用BI工具來做,專業的數據可視化分析軟件,除了詞云圖之外還能做出其他經驗的數據可視化效果,操作很簡單,適合數據分析師上手。
一款國產的數據分析工具,個人版是永久免費的,生成可視化圖表很簡單,制作詞云圖也不例外,把數據源加載進界面后,圖表選擇詞云圖,把熱詞和詞頻拖拽到對應設置框,圖表就自動生成了,由于操作很簡單,所以也是我經常用的。
是國內外知名度比較高的商業智能工具,可視化功能很強大,用來制作一般的可視化分析很方便,不過需要收費,具體的制作步驟和上面的類似,數據源都需要提前完成詞頻統計。
這兩個工具的定位是商業智能軟件,側重數據分析,詞云圖不是強項,用來做平時的可視化分析還是不錯的
優點:操作極其簡單,詞云圖界能夠二次篩選,有一定的交互屬性
缺點:要先準備好詞頻統計,沒辦法自定義詞云圖形狀,個性化設置不如上面的在線網頁工具。
3、編程工具
除了上面現成的軟件和網站之外,還有一種方法就是代碼生成詞云圖,比如,下面推薦幾個常用的制作詞云圖用的第三方庫
1.
是專門用來制作詞云圖的第三方庫,使用前需安裝,不過這個安裝過程比較麻煩,我試了一下,容易出現問題。自帶切分詞處理能力,但是效果一般,所以往往還是會配套使用jieba庫來進行切分,而后再用空格連接(在處理切分時優先使用空格作為分隔符)。
代碼如下:
import jieba
import wordcloud
import matplotlib.pyplot as plt
word_list = jieba.lcut(words) # 結巴詞庫切分詞
word_list = [word for word in word_list if len(word.strip())>1]#清洗一個字的詞
word_clean=" ".join(word_list)
import imageio
mask=imageio.imread(r'kobe.jpg')
wc = wordcloud.WordCloud(font_path = "simkai.ttf",#指定字體類型
background_color = "white",#指定背景顏色
max_words = 200, # 詞云顯示的最大詞數
max_font_size = 255,#指定最大字號
mask = mask) #指定模板

wc = wc.generate(word_clean)##生成詞云
plt.imshow(wc)
plt.axis("off")
plt.show()
"""Wordcloud詳細參數設置
def __init__(self, font_path=None, width=400, height=200, margin=2,
ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,
color_func=None, max_words=200, min_font_size=4,
stopwords=None, random_state=None, background_color='black',
max_font_size=None, font_step=1, mode="RGB",
relative_scaling='auto', regexp=None, collocations=True,
colormap=None, normalize_plurals=True, contour_width=0,
contour_color='black', repeat=False,
include_numbers=False, min_word_length=0):
"""
翻了一下的官方文檔發現它自帶參數設置非常廣泛,比如:設置字體;mask設置詞云模板;停用詞列表
效果如下:
2.
除了外,也支持生成詞云,和上面BI工具生成詞云的方式類似,也要求輸入的數據是經過篩選和統計好的數據,比如經過jieba分詞+統計后得到的數據就可以很方便的用來作詞云。而且,的所有圖表均可交互,詞云圖也不例外,這也算是它的一項優勢。
代碼如下:
import jieba
from collections import Counter
from pyecharts.charts import WordCloud
word_list = jieba.lcut(words) # 切分詞
word_list = [word.strip() for word in word_list if len(word.strip())>1]
wordCount = Counter(word_list)
wc = WordCloud()
wc.add("", wordCount.items(), word_size_range=[20, 100])
wc.render(r'kobe.html')
"""

def add(
self,
series_name: str,
data_pair: types.Sequence,
*,
shape: str = "circle",
word_gap: types.Numeric = 20,
word_size_range: types.Optional[types.Sequence] = None,
rotate_step: types.Numeric = 45,
tooltip_opts: types.Tooltip = None,
itemstyle_opts: types.ItemStyle = None,
):"""
可以設置一些詞云圖的參數,不過相比庫來說,實在是太有限了。
利用生成的詞云效果如下:
生成的詞云圖片看上去有些過于"規矩",字體旋轉角度單一(通過參數設置),字號大小對比也不夠明顯。