当前位置:   article > 正文

用Python绘制了若干张词云图,惊艳了所有人

python数据可视化 - 词云图

数据可视化图表中,词云图的应用随处可见。它通常是对输入的一段文字进行词频提取,然后以根据词汇出现频率的大小集中显示高频词,简洁直观高效,今天小编就来分享一下在Python如何绘制出来精湛的词云图

小试牛刀

我们先来尝试绘制一张简单的词云图,用到的Python当中的wordcloud模块来绘制,

  1. import jieba
  2. from wordcloud import WordCloud
  3. import matplotlib.pyplot as plt

我们导入文本内容,并且去除掉一下换行符和空格,代码如下

  1. text = open(r"明朝那些事儿.txt",encoding='utf8').read()
  2. text = text.replace('\n',"").replace("\u3000","")

我们需要将其分成一个个的词,这个时候就需要用到jieba模块了,代码如下

  1. text_cut = jieba.lcut(text)
  2. # 将分好的词用某个符号分割开连成字符串
  3. text_cut = ' '.join(text_cut)

当然了,得到的结果当中或许存在着不少我们不需要看的、无关紧要的内容,这个时候就需要用到停用词了,我们可以自己来构建,也可以直接使用别人已经构建好的停词表,这里小编采用的是后者,代码如下

stop_words = open(r"常见中文停用词表.txt").read().split("\n")

下面便是绘制词云图的核心代码了

  1. word_cloud = WordCloud(font_path="simsun.ttc",  # 设置词云字体
  2.                        background_color="white", # 词云图的背景颜色
  3.                        stopwords=stop_words) # 去掉的停词
  4. word_cloud.generate(text_cut)
  5. word_cloud.to_file("1.png")

output

40b254d9d839f85e1d92d440ad31f956.png

这样一张极其简单的词云图算是做好了,当然我们可以给它添加一个背景图片,例如下面这张图片,

5266e000df1151923e5e55e0e38721fd.png

主要需要添加的代码如下所示

  1. background = Image.open(r"5.png")
  2. graph = np.array(background)

然后在WorCloud当中添加mask参数

  1. # 使用WordCloud生成词云
  2. word_cloud = WordCloud(font_path="simsun.ttc",  # 设置词云字体
  3.                        background_color="white", # 词云图的背景颜色
  4.                        stopwords=stop_words, # 去掉的停词
  5.                        mask=graph)
  6. word_cloud.generate(text_cut)
  7. word_cloud.to_file("1.png")

output

4b1095df601730cce77da386eba22772.png

深度优化

除此之外,还有另外一个模块stylecloud绘制出来的词云图也是非常酷炫的,其中我们主要是用到下面这个函数

  1. gen_stylecloud(text=None,
  2.                icon_name='fas fa-flag',
  3.                colors=None,
  4.                palette='cartocolors.qualitative.Bold_5',
  5.                background_color="white",
  6.                max_font_size=200,
  7.                max_words=2000,
  8.                stopwords=True,
  9.                custom_stopwords=STOPWORDS,
  10.                output_name='stylecloud.png',
  11. )

其中几个常用的参数有

  • icon_name: 词云图的形状

  • max_font_size: 最大的字号

  • max_words: 可以容纳下的最大单词数量

  • stopwords: 用于筛选常见的停用词

  • custom_stopwords: 要是自建有停用词表,可以拿来用

  • palette: 调色板

我们来尝试绘制一个词云图,代码如下

  1. stylecloud.gen_stylecloud(text=text_cut,
  2.                           palette='tableau.BlueRed_6',
  3.                           icon_name='fas fa-apple-alt',
  4.                           font_path=r'田英章楷书3500字.ttf',
  5.                           output_name='2.png',
  6.                           stopwords=True,
  7.                           custom_stopwords=stop_words)

output

272dd528127809cb7b66c16bbd6d9a43.png

其中的palette参数作为调色板,可以任意变换的,具体参考:https://jiffyclub.github.io/palettable/ 这个网站。

pyecharts

最后我们来看一下如何用Pyecharts模块来进行词云图的绘制,代码如下

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Page, WordCloud
  3. words = [
  4.     ("皇帝"10000),
  5.     ("朱元璋"6181),
  6.     ("明朝"4386),
  7.     ("朝廷"4055),
  8.     ("明军"2467),
  9.     ("士兵"2244),
  10.     ("张居正"1868),
  11.     ("王守仁"1281)
  12. ]
  13. c = (
  14.         WordCloud()
  15.         .add("", words, word_size_range=[20100])
  16.         .set_global_opts(title_opts=opts.TitleOpts(title="基本示例"))
  17.     )
  18. c.render("1.html")

output

399751a818a902b0273ff3435a354699.png

出来的结果略显简单了,不过这里值得注意的是,pyecharts当中的WordCloud()方法传入的数据是指定的词语以及其出现的频次,这个和之前的操作有所不同

NO.1

往期推荐

Historical articles

精心制作了一期用Python操作MySQL的使用教程集锦!!

用Python制作可视化GUI界面,一键实现多种风格的照片处理

用Python自动化操作Excel制作报表,真的是太方便啦!!!

【Python自动化办公】分享几个好用到爆的模块,建议收藏!

分享、收藏、点赞、在看安排一下?

14c55730f150aa00e76ad307caf3ac1e.gif

17628698a1b79b839241dabd3bf23e0e.gif

157d018880f88dc4d4bdbcaaedd697b7.gif

c7b0daec888187a9da8639235f9ec0e6.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/531920
推荐阅读
相关标签
  

闽ICP备14008679号