用python绘制好看的图形_怎么用Python画出好看的词云图?
相信很多人在第一眼看到下面這些圖時,都會被其牛逼的視覺效應所吸引,這篇文章就教大家怎么用Python畫出這種圖。
前期準備
上面的這種圖叫做詞云圖,主要用途是將文本數據中出現頻率較高的關鍵詞以可視化的形式展現出來,使人一眼就可以領略文本數據的主要表達意思。詞云圖中,詞的大小代表了其詞頻,越大的字代表其出現頻率更高。
那生成一張詞云圖的主要步驟有哪些?過程中又需要用到哪些Python庫呢?首先需要一份待分析的文本數據,由于文本數據都是一段一段的,所以第一步要將這些句子或者段落劃分成詞,這個過程稱之為分詞,需要用到Python中的分詞庫jieba。
分詞之后,就需要根據分詞結果生成詞云,這個過程需要用到wordcloud庫
最后需要將生成的詞云展現出來,用到大家比較熟悉的matplotlib
理清了詞云圖繪制的主要脈絡之后,下面就用代碼操作起來。
小試牛刀
2020剛開年,所以我也特地去找了幾首新年歌,將它們的歌詞匯總起來作為本次展示用的文本數據,大家可以看看新年歌中哪些詞的出現頻率比較高。我們先繪制一個比較簡單的詞云圖:
# 導入相應的庫
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
?
# 導入文本數據并進行簡單的文本處理
# 去掉換行符和空格
text = open("./data/新年歌.txt",encoding='utf8').read()
text = text.replace('\n',"").replace("\u3000","")
# 分詞,返回結果為詞的列表
text_cut = jieba.lcut(text)
# 將分好的詞用某個符號分割開連成字符串
text_cut = ' '.join(text_cut)
# 導入停詞
# 用于去掉文本中類似于'啊'、'你','我'之類的詞
stop_words = open("F:/NLP/chinese corpus/stopwords/stop_words_zh.txt",encoding="utf8").read().split("\n")
?
# 使用WordCloud生成詞云
word_cloud = WordCloud(font_path="simsun.ttc", # 設置詞云字體
background_color="white", # 詞云圖的背景顏色
stopwords=stop_words) # 去掉的停詞
word_cloud.generate(text_cut)
?
# 運用matplotlib展現結果
plt.subplots(figsize=(12,8))
plt.imshow(word_cloud)
plt.axis("off")
一張簡單的詞云圖就成功生成啦,但看起來好像并沒有特別好看,怎么生成帶特定形狀的詞云呢?
登堂入室
想生成帶特定形狀的詞云,首先得準備一張該形狀的圖片,且除了目標形狀外,其他地方都是空白的,如下面這張用于演示的圖。
上圖中除了福字之外都是白色的,準備好之后就上代碼
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
?
text = open("./data/新年歌.txt",encoding='utf8').read()
text = text.replace('\n',"").replace("\u3000","")
text_cut = jieba.lcut(text)
text_cut = ' '.join(text_cut)
?
stop_words = open("F:/NLP/chinese corpus/stopwords/stop_words_zh.txt",encoding="utf8").read().split("\n")
?
# 主要區別
background = Image.open("./data/background.png")
graph = np.array(background)
?
word_cloud = WordCloud(font_path="simsun.ttc",
background_color="white",
mask=graph, # 指定詞云的形狀
stopwords=stop_words)
?
word_cloud.generate(text_cut)
plt.subplots(figsize=(12,8))
plt.imshow(word_cloud)
plt.axis("off")
代碼部分和普通的圖基本一致,區別在于要導入相應形狀的圖片,并在wordcloud設置了mask參數。
生成的詞云圖如下:
是不是還挺簡單的,借這張圖也祝福大家2020年都福氣滿滿!
原創不易,如果覺得有點用,希望可以隨手點個贊,拜謝各位老鐵。
總結
以上是生活随笔為你收集整理的用python绘制好看的图形_怎么用Python画出好看的词云图?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue实现查询多条记录_vue.js 实
- 下一篇: centos vsftp mysql_C