51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1049|回复: 0
打印 上一主题 下一主题

[资料] 用Python玩“花活”惊艳了所有人你会吗?

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-8-19 11:14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在数据可视化图表中,词云图的应用随处可见。它通常是对输入的一段文字进行词频提取,然后以根据词汇出现频率的大小集中显示高频词,简洁直观高效,今天小编就来分享一下在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)
    复制代码
    当然了,得到的结果当中或许存在着不少我们不需要看的、无关紧要的内容,这个时候就需要用到停用词了,我们可以自己来构建,也可以直接使用别人已经构建好的停词表,这里小编采用的是后者,代码如下:

    1. 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


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

    主要需要添加的代码如下所示:
    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


    深度优化
      除此之外,还有另外一个模块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

    其中的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=[20, 100])
    16.          .set_global_opts(title_opts=opts.TitleOpts(title="基本示例"))
    17.      )
    18.   c.render("1.html")
    复制代码
     output

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






    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 05:36 , Processed in 0.066736 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表