Python 绘制词云图:更改或自定义背景颜色,图片轮廓,图片大小等,根据词频生成(放入自写库,一行代码快速实现复杂绘图)

在这里插入图片描述

引言

  词云的作用已不必多说,也有许多不同版本生成词云的方法,但有时候调整图片细节能把人给调得脚趾头不自觉的瞉起。所以为何不直接将其封装进一个函数中,将各种绘制参数都事先准备好,尽可能一了百了呢?说干就干,看看下面的效果图就知道了。PS:Jupyter notebook 实现



使用效果

  使用前的注意事项:被读取的文本文件和希望自定义的图片轮廓需要与你的 py 文件放在同一个文件夹。

另外,图片还得经过特殊处理一下,可以请身边ps老鸟帮忙或自己稍微学一下又或者借助图片处理软件

  • 背景雪白
  • 如果希望是人物轮廓型,既能够看得出镂空的边的,还得更细致的处理一下

笔者以下面这张图作为词云的轮廓,背景够白了吧,但中间没有镂空,一起期待一下效果吧!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这就是不镂空的结果,只有一坨东西,不过如果图形是地图之类的无需镂空也能很好看出你在画什么的那就无妨。



代码呈现

  代码中的各种坑笔者都已经踩过了,所以注释也还算清晰明了,望对各位有帮助。也希望各位的数据可视化能够画出姿态,画出辉煌。

def wordcloud_create(content, most_common_num=None,
                     figsize=(12,10), pac_mask=None, 
                     background_color='white'):
    """ 
    函数功能:根据次词频生成词云,可自定义词云的背景颜色与轮廓
    content: 文本内容
    most_common_num: 最常出现的字的个数
    figsize: 默认大小为 12,10,彰显大气
    mask: 遮罩层,也称为词云图的轮廓,默认没有,需要自己添加
    background_color: 词云图背景颜色,默认白色
    """
    # ------------------ 引入必要库 --------------
    import jieba
    from PIL import Image
    from wordcloud import WordCloud  # 用来生成词云的库
    import matplotlib.pyplot as plt   # Python画图库
    from imageio import imread    
    # Python读取各类图像的库,imageio 好些,以前的一些其他的用不了了
    from collections import Counter   # Counter:计算器,计数员,用来统计词频
    # ------------------ 拼接文本 -------------------
    mylist = list(content)  # 用list()函数将导入的文件变成列表模式
    new_list = [" ".join(jieba.cut(sentence)) for sentence in mylist]
    # 逐一从my_list列表中抽出句子来给jieba这家伙截词,截了以后用join,以空格作为间隔连接起来
    # 不用逗号连接起来的原因,避免不必要的干扰
    con_words = ' '.join(new_list) # 这一行也很关键,消除换行符的影响
    frequencies = Counter(con_words).most_common(most_common_num)
    frequencies = dict(frequencies)
    # -----------设置词云轮廓并生成词云 --------------------
    if pac_mask == None:
        wc = WordCloud(font_path='simhei.ttf',  # simhei.ttf:黑体
                        background_color=background_color,
                       max_words=2000
                      ).fit_words(frequencies)
        # 如:允许显示出来的最大词数,最大最大频率词的大小,等等
        plt.figure(figsize=figsize)
        plt.imshow(wc)
        plt.axis('off')  
        # axis: 轴,off掉,不显示坐标轴,否则会显示出以图片频率为xy轴的坐标轴
        plt.show()
    else:
        pac_mask = imread(pac_mask=pac_mask)
        wc = WordCloud(font_path='simhei.ttf',  # simhei.ttf:黑体
                        background_color=background_color, 
                       max_words=2000,
                       mask=pac_mask).fit_words(frequencies)

        # 如:允许显示出来的最大词数,最大最大频率词的大小,等等
        plt.figure(figsize=figsize)
        plt.imshow(wc)
        plt.axis('off')  
        # axis: 轴,off掉,不显示坐标轴,否则会显示出以图片频率为xy轴的坐标轴

延伸阅读



后记

  数据分析,商业实践,数据可视化,网络爬虫,统计学,Excel,Word, 社会心理学,认知心理学,行为科学,民族意志学 各种专栏后续疯狂补充

  欢迎评论与私信交流!

发布了51 篇原创文章 · 获赞 29 · 访问量 8956

猜你喜欢

转载自blog.csdn.net/weixin_43329700/article/details/104524502