幾行代碼教你使用python製作詞雲(五)之按模板填色

幾行代碼教你使用python製作詞雲(五)

今天繪製的詞雲是按照模板的顏色進行詞雲填充,大致(對比圖)如下

補充:原生詞雲圖(左)、按模板圖片顏色的詞雲圖(中)和模板圖片(右)


1.準備數據和源圖片

數據:蠟筆小新介紹
圖片:蠟筆小新

2.代碼分析

導入繪圖庫matplotlib和詞雲製作庫wordcloud

# 導入繪圖庫matplotlib和詞雲製作庫wordcloud
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator

載入數據

# 將外部文件包含的文本保存在text變量中
text = open('./data/XiaoXin.txt',encoding='utf-8').read()

載入數據圖片

# 導入imageio庫中的imread函數,並用這個函數讀取本地圖片queen2.jfif,作爲詞雲形狀圖片
import imageio
mk = imageio.imread("./input/xiaoxin.jpg")

構建詞雲對象wc

# 構建詞雲對象w,傳參
wc = WordCloud(background_color="white",
               scale=15,
               contour_width=1,
               contour_color='steelblue',
               mask=mk,)
# 將text字符串變量傳入w的generate()方法,給詞雲輸入文字
wc.generate(text)

圖像處理

# 調用wordcloud庫中的ImageColorGenerator()函數,提取模板圖片各部分的顏色
image_colors = ImageColorGenerator(mk)
# 顯示原生詞雲圖、按模板圖片顏色的詞雲圖和模板圖片,按左、中、右顯示
fig, axes = plt.subplots(1, 3)
# 最左邊的圖片顯示原生詞雲圖
axes[0].imshow(wc)
# 中間的圖片顯示按模板圖片顏色生成的詞雲圖,採用雙線性插值的方法顯示顏色
axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
# 右邊的圖片顯示模板圖片
axes[2].imshow(mk, cmap=plt.cm.gray)
for ax in axes:
    ax.set_axis_off()
plt.show()

# 給詞雲對象按模板圖片的顏色重新上色
wc_color = wc.recolor(color_func=image_colors)

輸出並導出結果圖片

# 在控制檯繪製並輸出圖像
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")
# 將詞雲圖片導出到當前文件夾
wc.to_file('./output/xiaoxin1.png')

3.完整代碼

# -*- coding: utf-8 -*-
"""
Created on Mon Jun  4 10:20:21 2020

@author: Jay-L
"""
# 導入繪圖庫matplotlib和詞雲製作庫wordcloud
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator

# 將外部文件包含的文本保存在text變量中
text = open('./data/XiaoXin.txt',encoding='utf-8').read()

# 導入imageio庫中的imread函數,並用這個函數讀取本地圖片queen2.jfif,作爲詞雲形狀圖片
import imageio
mk = imageio.imread("./input/xiaoxin.jpg")

# 構建詞雲對象w
wc = WordCloud(background_color="white",
               scale=15,
               contour_width=1,
               contour_color='steelblue',
               mask=mk,)
# 將text字符串變量傳入w的generate()方法,給詞雲輸入文字
wc.generate(text)

# 調用wordcloud庫中的ImageColorGenerator()函數,提取模板圖片各部分的顏色
image_colors = ImageColorGenerator(mk)

# 顯示原生詞雲圖、按模板圖片顏色的詞雲圖和模板圖片,按左、中、右顯示
fig, axes = plt.subplots(1, 3)
# 最左邊的圖片顯示原生詞雲圖
axes[0].imshow(wc)
# 中間的圖片顯示按模板圖片顏色生成的詞雲圖,採用雙線性插值的方法顯示顏色
axes[1].imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
# 右邊的圖片顯示模板圖片
axes[2].imshow(mk, cmap=plt.cm.gray)
for ax in axes:
    ax.set_axis_off()
plt.show()

# 給詞雲對象按模板圖片的顏色重新上色
wc_color = wc.recolor(color_func=image_colors)

# 在控制檯繪製並輸出圖像
plt.imshow(wc,interpolation="bilinear")
plt.axis("off")

# 將詞雲圖片導出到當前文件夾
wc.to_file('./output/xiaoxin1.png')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章