当我们写一篇文案或者思考一个问题的时候,一般会把所有可能出现的关键词写出来,甚至能写到二三十个,当然,这些关键词很多并不关键,它们只是出现在了你的头脑中了。
“词云图”是一种管理我们思维方式的好方法,避免了我们在所有出现的关键词上浪费时间动心思,那样问题是没办法推进的。
绘制词云图,我们使用 wordcloud 模块的 WordCloud
函数。
# -*- coding: utf-8 -*-
from wordcloud import WordCloud # 导入词云模块
import matplotlib.pyplot as plt
# 打开文本
text = open('constitution.txt').read()
# 生成对象
wc = WordCloud().generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
constitution.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339152
运行结果:
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 打开文本
text = open('《西游记》.txt', encoding='utf-8').read()
# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# Hiragino.ttf 是中文字体,需要下载
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
运行结果:
中文分词,使用 jieba 模块的 cut(text) 函数。
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba # 导入分词模块
# 打开文本
text = open('《西游记》.txt').read()
# 中文分词
text = ' '.join(jieba.cut(text)) # 格式:词 词 词,词和空格间隔
# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
运行结果:
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
# 打开文本
text = open('《西游记》.txt').read()
# 中文分词
text = ' '.join(jieba.cut(text))
# 生成对象
mask = np.array(Image.open("black_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
black_mask.png
下载链接:https://download.csdn.net/download/qq_41739364/86339282
运行结果:
指定颜色,我们使用 ImageColorGenerator
函数。
# -*- coding: utf-8 -*-
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
# 打开文本
text = open('《西游记》.txt').read()
# 中文分词
text = ' '.join(jieba.cut(text))
# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)
# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
color_mask.png
下载链接:https://download.csdn.net/download/qq_41739364/86339290
运行结果:
配色方案, 请搜索 HSL 配色方案。
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import random
import jieba
# 打开文本
text = open('《西游记》.txt').read()
# 中文分词
text = ' '.join(jieba.cut(text))
# 颜色函数
def random_color(word, font_size, position, orientation, font_path, random_state):
s = 'hsl(0, %d%%, %d%%)' % (random.randint(60, 80), random.randint(60, 80))
print(s)
return s
# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(color_func=random_color, mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
color_mask.png
下载链接:https://download.csdn.net/download/qq_41739364/86339290
运行结果:
如果希望精细控制词云中出现的词,我们用 generate_from_frequencies
函数。
# -*- coding: utf-8 -*-
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse
# 打开文本
text = open('《西游记》.txt').read()
# 提取关键词和权重
freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
freq = {i[0]: i[1] for i in freq}
# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate_from_frequencies(freq)
# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()
# 保存到文件
wc.to_file('wordcloud.png')
《西游记》.txt
下载链接:https://download.csdn.net/download/qq_41739364/86339157
中文字体 Hiragino.ttf
下载链接:https://download.csdn.net/download/qq_41739364/86339164
color_mask.png
下载链接:https://download.csdn.net/download/qq_41739364/86339290
运行结果: