Python 製作個性化形狀的雲詞

1.先上圖


這是一張我介紹的雲詞圖。
(由這張圖可以給人的信息:作者叫蘇-,專業:人文地理與城鄉規劃,學校湖南師大,擅長於Pyhon,PS,arcgis等等,可能和挑戰杯,鄉村聚落等打過交道,其他信息就不多贅述了,總而言之,在大數據及信息化的今天,用這樣一張雲詞圖,可以很好的對人或物品做介紹)
分析我這張的圖需求,也就是做這張圖的要求及目標:
第一:自定義形狀
第二:詞條長短不一
第三:詞的內容具有不確定性
第四:每個詞具有特定的權重大小
所以以上四點決定着最終表達效果的成敗。

2、使用工具:Pycharm+ps

3、上代碼

# -*- coding: utf-8 -*-
__author__ = 'xiaosu'
# wordcloud 生成中文詞雲
from os import path
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from scipy.misc import imread
# 繪製詞雲
def draw_wordcloud():
    d = path.dirname(__file__) # 當前文件文件夾所在目錄
    frequencies = {u'蘇傑':1,u'地理信息系統 ':0.4,u'人文地理與城鄉規劃':0.6,u'鄉村振興':0.3,u'聚落 ':0.2,u'城鄉交通':0.4,
u'長株潭 ':0.4,u'城鄉一體化 ':0.4,u'區域科學 ':0.2,u'C語言':0.2,u'Gephi ':0.2,u'Photoshop ':0.3,u'挑戰杯 ':0.3,u'Office ':0.4,u'AutoCAD':0.3,
u'Spss ':0.3,u'Coredraw':0.2,u'湖南師大 ':0.6,u'湖南省政府發展研究中心':0.06,u'湖南省經濟地理研究所':0.06,u'長沙市規劃信息服務中心':0.06,u'一等獎':0.2} #只放了一部分詞,可按格式擴展詞彙量
    color_mask = imread("hunan.jpg") # 讀取背景圖片
    cloud = WordCloud(
        # 設置字體,不指定就會出現亂碼
        font_path="STSONG.TTF",
        # 設置背景色
        background_color='black',
        # 詞雲形狀
        mask=color_mask,
        #允許最大詞彙
        max_words=2000,
        #最大號字體
        max_font_size=200,
        min_font_size=50 #最小號字體
    )
    word_cloud = cloud.fit_words(frequencies) # 產生詞雲
    word_cloud.to_file("hunanT2.jpg") # 保存圖片
    #  顯示詞雲圖片
    plt.imshow(word_cloud)
    plt.axis('off')
    plt.show()
if __name__ == '__main__':
    draw_wordcloud()

4.代碼解釋: (基本的語法就不介紹了)

主要講爲什麼這樣寫:
1.爲什麼用frequencies 而不用jieba模塊分割TXT文件內容?
a、frequencies 能記錄我指定詞彙和想要的權重
b、我不能寫一篇自我介紹的TXT,再用jieba去分割詞彙吧。用jieba不能去分割出較長的特定的名字(可能是我不會),還有分解出的詞彙也不會有我想要的權重。
2.如何指定特定形狀?
WordCloud這個庫還是蠻強大的,在生成詞雲前,可以通過 color_mask指定 圖片格式的形狀,默認是圖片中有色的區域是掩膜。
3.frequencies裏的隨着詞彙的增多,敲的代碼也多,怎樣提速?
詞彙還是得一個個敲,但是可以在Excel中敲,然後給了權重,藉助Excel函數批量整理成[u’地理信息系統 ‘:0.4,] 的格式,然後直接複製到代碼中。
4.生成詞雲效果不理想?
詞雲生成是隨機的,也就是說詞的位置顏色是隨機的,可以多生成幾次,然後PS渲染一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章