python输出字体的大小_python小白零基础词云快速上手指南

上一篇我们以马云的微博为例,介绍了如何使用requests将马云的所有微博爬下来(传送门:马云这些年在微博上都说过些什么——小白python爬虫实战(1)),爬下来之后,我们最终想要得到的是一个像下图一样的词云↓

e8bea2db0df73c7ca2ae3e303cc406c1.png

那么词云该怎么做呢?


还是以上篇文章爬出来的马老板的全部微博文本jackma.txt为例。

先从最朴素的词云开始:

65597e6cdfc3e831f51e289fddf16eb2.png

像上图这样的词云,还没有特定的图案和花里胡哨的展示方式,这是怎么做出来的呢?

老样子,先直接——

上!  代!  码!

import collections  # 词频统计import jieba  # 结巴分词import wordcloud  # 词云生成import matplotlib.pyplot as plt  # 图像展示# 文件路径path_txt = 'E:/你的文件路径/jackma.txt'# 打开txt文件text = open(path_txt, encoding="utf-8").read()# 文本分词,精确模式seg_list_exact = jieba.cut(text, cut_all=False)object_list = []# 自定义去除词remove_words = [u'的', u'给', u'和', u'并', u'是', u'你', u'人', u'不', u'去', u'都', u'才', u'又', u'那',                u'从', u'过', u'中', u'做', u'了', u'但', u'们', u'在', u'也', u'很', u'让', u'他', u'被',                u'啥', u'我', u'有', u'等', u'对', u'及', u'年', u'后', u'万', u'把', u'时', u'来', u'为',                u'啊', u'能', u'或', u'会', u'说', u'这', u'要', u'就', u'还', u'而', u'着', u'到', u'好',                u'最', u'多', u'上', u'想', u'看']# 循环读出每个分词,将不在去除词中的分词添加到列表for word in seg_list_exact:     if word not in remove_words:        object_list.append(word)# 对分词进行词频统计word_counts = collections.Counter(object_list) # 获取前100最高频的词word_counts_top100 = word_counts.most_common(100)print(word_counts_top100)  # 输出检查# 词云设置wc = wordcloud.WordCloud(    # 设置字体格式防止乱码    font_path='C:/Windows/Fonts/simhei.ttf',    # 设置背景颜色    background_color="white",    # 设置最多显示词数    max_words=200,    # 设置字体最大值    max_font_size=100)# 生成词云wc.generate_from_frequencies(word_counts)# 显示词云plt.imshow(wc)# 关闭坐标轴plt.axis('off')# 图像显示plt.show()

(※关注 呔塔 公众号后台回复 “词云” 获取本篇完整代码。)

运行上面代码后弹出窗口中即显示生成的词云

8a00fce254635e6a58c0b33b9db25e6d.png

如果想要将词云保存为图片,既可以在弹出窗口的底部点击文件小图标进行图片另存为,也可以在代码末尾再加一行保存为图片的代码:

wc.to_file('jackma.png')

同样的,这里也可以自定义路径,若无指定路径则默认图片生成在工程文件夹下。


上面这串代码是如何实现生成词云的呢?

这里主要用到四个库,它们分别用来进行分词、词频统计、生成词云和展示图像。

import collections  # 词频统计import jieba  # 结巴分词import wordcloud  # 词云生成import matplotlib.pyplot as plt  # 图像展示

首先将txt文本通过jieba进行分词切割成一个一个的词语,再通过词频统计计算出每个词语出现的次数,然后就能生成对应的词云。

需要注意的是,在jieba分词的过程中,有很多停止词是我们不需要出现在词云中的,比如说“的”、“也”、“啊”诸如此类的词语,为了将这些词语过滤掉,我们需要设定去除词,可以使用专门的停止词包。这里我们自定义了一个去除词词库,在实际应用过程中方便灵活更改。

自定义去除词库之后,用一个for循环将这些不需要的词筛出来,然后就可以对剩下的词汇进行词频统计了。

object_list = []# 自定义去除词remove_words = [u'的', u'给', u'和', u'并', u'是', u'你', u'人', u'不', u'去', u'都', u'才', u'又', u'那',                u'从', u'过', u'中', u'做', u'了', u'但', u'们', u'在', u'也', u'很', u'让', u'他', u'被',                u'啥', u'我', u'有', u'等', u'对', u'及', u'年', u'后', u'万', u'把', u'时', u'来', u'为',                u'啊', u'能', u'或', u'会', u'说', u'这', u'要', u'就', u'还', u'而', u'着', u'到', u'好',                u'最', u'多', u'上', u'想', u'看']# 循环读出每个分词,将不在去除词中的分词添加到列表for word in seg_list_exact:    if word not in remove_words:        object_list.append(word)         # 对分词进行词频统计word_counts = collections.Counter(object_list)

进行完词频统计,就可以着手生成词云,生成词云前可以对诸如字体大小、背景颜色之类的进行设置,注意需要指定字体文件,不然容易乱码

# 词云设置wc = wordcloud.WordCloud(    # 设置字体格式防止乱码    font_path='C:/Windows/Fonts/simhei.ttf',    # 设置背景颜色    background_color="white",    # 设置最多显示词数    max_words=200,    # 设置字体最大值    max_font_size=100)

然而,上面代码生成的词云太朴素了,如何让词云花里胡哨起来像下面一样呢?

5eca5910f1741d6619b4ed9a86acb4e6.png

这里我们将词云做成了蚂蚁集团logo的样子,要实现上述效果,在上面代码的基础上首先要再引入两个库,用于文件数据处理与图像数据处理。

import numpy as np   # 数据处理from PIL import Image  # 图像处理

既然要让词云形成特定的形状,首先要引入一张图片,作为词云的背景图,这里我们用的就是蚂蚁集团的logo。

mask = np.array(Image.open(r'C:\Users\Desktop\AntGroup.jpg'))

80eb2e65c066543a10b23c8472d61d53.png

接下来我们只需要在词云设置中加上一行,设定好上面引入的mask作为背景就可以了。

mask=mask

运行程序,我们得到了下面这样的词云,它的形状已经是背景图片的蚂蚁集团logo样式了,然而颜色还没有设定。

dd60a91745330a07823109d4c709a741.png

将词云颜色设置成背景图样式,只需在生成词云获取背景图颜色方案,并将方案给词云即可。

# 获取背景图颜色方案image_colors = wordcloud.ImageColorGenerator(mask)# 将背景图颜色方案给词云wc.recolor(color_func=image_colors)

31df1c49b5a47650a2c442e057cacdc1.png

以上就是用python制作词云的基本方法,至于词云究竟要做出怎样的style,就看各位小伙伴各显神通了。

关注 呔塔 公众号后台回复 “词云” 获取本篇完整代码。


戳文末二维码,关注呔塔公众号,这里有杂记、爬虫和数据可视化。

↓↓↓

a316208554b2765a78c244c99ca79694.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值