词云是一种数据呈现方式,本文用Python的wordcloud
包实现。
WordCloud()
的可选参数:- font_path:指定字体(otf和ttf)
- width:词云宽度(默认400)
- height:词云高度(默认200)
- mask:蒙版(定制词云的形状)
- min_font_size:最小字号(默认为4)
- max_font_size:最大字号(默认为词云高度)
- max_words:词的最大数量(默认200)
- stopwords:将被忽略的停用词(若不指定则使用默认停用词词库)
- background_color:背景颜色(默认为 black)
- mode:默认为RGB模式(如果为RGBA模式且background_color设为None,则背景将透明)
- 学习参考
英文词云
代码
1
from wordcloud import WordCloud
2
import matplotlib.pyplot as plt
3
4
# 打开文本
5
text = open('EnglishText.txt').read()
6
# 生成对象
7
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
8
# 显示词云
9
plt.imshow(wc, interpolation='bilinear')
10
plt.axis('off')
11
plt.show()
12
# 保存到文件
13
wc.to_file('wordcloud.png')
结果
中文词云
代码
1
from wordcloud import WordCloud
2
import matplotlib.pyplot as plt
3
import jieba
4
5
# 打开文本
6
text = open('xyj.txt').read()
7
# 中文分词
8
text = ' '.join(jieba.cut(text))
9
# 生成对象
10
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
11
# 显示词云
12
plt.imshow(wc, interpolation='bilinear')
13
plt.axis('off')
14
plt.show()
15
# 保存到文件
16
wc.to_file('wordcloud.png')
结果
词云形状
代码
1
from wordcloud import WordCloud
2
from PIL import Image
3
import numpy as np
4
import matplotlib.pyplot as plt
5
import jieba
6
7
# 打开文本
8
text = open('xyj.txt').read()
9
# 中文分词
10
text = ' '.join(jieba.cut(text))
11
# 生成对象
12
mask = np.array(Image.open('mask.png')) # 设置词云形状
13
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
14
# 显示词云
15
plt.imshow(wc, interpolation='bilinear')
16
plt.axis('off')
17
plt.show()
18
# 保存到文件
19
wc.to_file('wordcloud.png')
结果
词云颜色
代码
1
from wordcloud import WordCloud, ImageColorGenerator
2
from PIL import Image
3
import numpy as np
4
import matplotlib.pyplot as plt
5
import jieba
6
7
# 打开文本
8
text = open('xyj.txt').read()
9
# 中文分词
10
text = ' '.join(jieba.cut(text))
11
# 生成对象
12
mask = np.array(Image.open('mask.png'))
13
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
14
# 从图片中抽取颜色
15
image_colors = ImageColorGenerator(mask)
16
wc.recolor(color_func=image_colors)
17
# 显示词云
18
plt.imshow(wc, interpolation='bilinear')
19
plt.axis('off')
20
plt.show()
21
# 保存到文件
22
wc.to_file('wordcloud.png')
结果