哈尔滨做网站企业,东莞有互联网企业吗,野望王绩翻译,进入兔展网站做PPt相信很多人在第一眼看到下面这些图时#xff0c;都会被其牛逼的视觉效应所吸引#xff0c;这篇文章就教大家怎么用Python画出这种图。
前期准备
上面的这种图叫做词云图#xff0c;主要用途是将文本数据中出现频率较高的关键词以可视化的形式展现出来#xff0c;使人一眼就…相信很多人在第一眼看到下面这些图时都会被其牛逼的视觉效应所吸引这篇文章就教大家怎么用Python画出这种图。
前期准备
上面的这种图叫做词云图主要用途是将文本数据中出现频率较高的关键词以可视化的形式展现出来使人一眼就可以领略文本数据的主要表达意思。词云图中词的大小代表了其词频越大的字代表其出现频率更高。
那生成一张词云图的主要步骤有哪些过程中又需要用到哪些Python库呢首先需要一份待分析的文本数据由于文本数据都是一段一段的所以第一步要将这些句子或者段落划分成词这个过程称之为分词需要用到Python中的分词库jieba。
分词之后就需要根据分词结果生成词云这个过程需要用到wordcloud库
最后需要将生成的词云展现出来用到大家比较熟悉的matplotlib
理清了词云图绘制的主要脉络之后下面就用代码操作起来。
小试牛刀
2020刚开年所以我也特地去找了几首新年歌将它们的歌词汇总起来作为本次展示用的文本数据大家可以看看新年歌中哪些词的出现频率比较高。我们先绘制一个比较简单的词云图
# 导入相应的库
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 导入文本数据并进行简单的文本处理
# 去掉换行符和空格
text open(./data/新年歌.txt,encodingutf8).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,encodingutf8).read().split(\n)
# 使用WordCloud生成词云
word_cloud WordCloud(font_pathsimsun.ttc, # 设置词云字体
background_colorwhite, # 词云图的背景颜色
stopwordsstop_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,encodingutf8).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,encodingutf8).read().split(\n)
# 主要区别
background Image.open(./data/background.png)
graph np.array(background)
word_cloud WordCloud(font_pathsimsun.ttc,
background_colorwhite,
maskgraph, # 指定词云的形状
stopwordsstop_words)
word_cloud.generate(text_cut)
plt.subplots(figsize(12,8))
plt.imshow(word_cloud)
plt.axis(off)
代码部分和普通的图基本一致区别在于要导入相应形状的图片并在wordcloud设置了mask参数。
生成的词云图如下
是不是还挺简单的借这张图也祝福大家2020年都福气满满
原创不易如果觉得有点用希望可以随手点个赞拜谢各位老铁。