用python绘制词云图,使用中文分析后制作词云图。并做出分析
时间: 2024-06-08 22:12:04 浏览: 97
回答:
好的,您可以使用Python中的wordcloud库来绘制中文词云图。首先需要安装中文字体,可以使用如下代码:
```python
import matplotlib
from matplotlib.font_manager import FontManager
import subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
output = subprocess.check_output(
'fc-list :lang=zh -f "%{family}\n"', shell=True)
# print ‘\n’.join(output.decode(‘utf-8’).split(‘\n’))
zh_fonts = set(f.split(',', 1)[0] for f in output.decode('utf-8').split('\n'))
available = mat_fonts & zh_fonts
matplotlib.rcParams['font.family'] = list(available)[0]
```
然后使用jieba库分词,统计每个词语出现的次数,最后生成词云图。可以使用如下代码:
```python
import jieba
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
# 读取文本文件
text = open("example.txt", "r", encoding="utf-8").read()
# 分词
cut_text = jieba.cut(text)
result = " ".join(cut_text)
# 设置停用词,增加或删除停用词列表中的词
stopwords = set(STOPWORDS)
stopwords.add("说道")
stopwords.add("眼前")
stopwords.add("两人")
stopwords.add("只见")
# 读取图片文件
mask = np.array(Image.open("example.jpg"))
# 生成词云图
wc = WordCloud(background_color="white", max_words=2000, mask=mask, stopwords=stopwords, max_font_size=80, random_state=42)
wc.generate(result)
# 显示词云图
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()
# 保存词云图
wc.to_file("example.png")
```
通过分析生成的词云图,可以了解文本中的关键词和热点话题。例如,如果生成的词云图中出现了“疫情”、“防护”等词汇,说明该文本与新冠病毒防控相关。如果出现了“旅游”、“美食”等词汇,则说明该文本与旅游美食相关。
阅读全文