zoukankan      html  css  js  c++  java
  • 【词云】wordcloud安装与使用

    wordcloud 是一个python实现的高效词频可视化工具,除了可以使用各种mask和颜色提供个性化的掩膜,还可以通过api便捷的挑战获得个性化的词云输出。
    安装pip install wordcloud


    wordcloud 包含三个主要api:

    • WordCloud([font_path, width, height, …]) 最重要的函数生成和描绘词云.
    • ImageColorGenerator(image[, default_color]) 通过输入rgb图像获得色彩信息.
    • random_color_func([word, font_size, …]) 随机渲染颜色.

    1.简单的小栗子

    首先我们需要一篇文本文档来显示,作为例子就copy了纽约时报的一篇报道存为demo.txt,随后使用wordcloud来可视化:

    import matplotlib.pyplot as plt  #导入画图包
    from wordcloud import WordCloud  #导入wordcloud api
    
    text = open('./demo.txt').read()    #打开刚刚保存的api
    wordcloud = WordCloud().generate(text)  #利用text生成词云
    
    #显示词云
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    

    这时候我们就有一副粗糙的词云图像了,可以看到词云基本上表示了文章的主题:
    在这里插入图片描述

    接下来我们要精炼一下我们的图像,让它变得更漂亮,这就需要详细地了解一下API的信息了。

    修改后的词云图:
    修改后的图在这里插入图片描述在这里插入图片描述

    2.API–wordcloud.WordCloud

    class wordcloud.WordCloud(font_path=None,   #可以指定词云的字体
    width=400, height=200, margin=2,            #词云长宽
    ranks_only=None, prefer_horizontal=0.9,     #水平竖直方向的比例
    mask=None, scale=1,                         #mask为词云的掩膜,可由图像突入二值BW图
    color_func=None,                            #定义颜色函数,可由ImageColorGenerator定义
    max_words=200,                              #最多显示的词数
    max_font_size=None,min_font_size=4, 
    font_step=1,                                #定义最小最大字体及其变化步长
    stopwords=None, random_state=None,          #待清除的词
    background_color='black',                   #定义背景颜色
    mode='RGB',                                 #RGBA时可以使得背景透明
    relative_scaling='auto',                    #词频与显示字体的相对大小
    regexp=None,                                #输入分词的正则表达式
    collocations=True,                          #
    colormap=None, 
    normalize_plurals=True,                     #单复数单词是否看成一致
    contour_width=0, contour_color='black',     #边缘设置
    repeat=False)                               #小于最大值时是否重复
    


    3.个性化词云

    针对api中的设置,我们可以修改刚才的代码来实现更好看的词云:

    import matplotlib.pyplot as plt
    from wordcloud import WordCloud,ImageColorGenerator
    import cv2
    
    text = open('./demo.txt').read()
    mask = cv2.imread('./font/Burdick-Scutoid.jpg')          #读入用于作为mask的图
    image_colors = ImageColorGenerator(mask)                 #生成颜色
    wc = WordCloud(font_path='./font/CabinSketch-Bold.ttf',  #设置字体,可以从google/font下载
    					  background_color='white',          #设置背景颜色
                          mask = mask,colormap='autumn',     #设置掩膜和colormap,会被color_func覆盖
                          #color_func=image_colors,          #设置颜色生成函数
                          #repeat=True,                      
                          contour_width=1, contour_color='gold'  #设置边框
                  )
    #字体下载地址:https://github.com/google/fonts/blob/master/ofl/cabinsketch/CabinSketch-Bold.ttf              
    wc.generate(text)
    plt.imshow(wc, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    

    运行后就得到了下面的图啦
    在这里插入图片描述

    4.中文词云

    同样我们先准备一份cn.txt中文文档,保存为utf-8编码:

    import io
    import jieba                     #导入jieba包作为切分词语的工具
    import matplotlib.pyplot as plt  #导入画图包
    from wordcloud import WordCloud  #导入wordcloud api
    
    text = io.open('./zh.txt',encoding ='utf-8').read()     #python2中需要利用io.open中的编码功能encoding
    cut_str = jieba.cut(text)  #使用Jieba分词进行  -> generator
    text = r' '.join(cut_str)  #将分词结果组合为字符串
    
    wordcloud = WordCloud(font_path = './font/simhei.ttf',background_color='white',colormap='jet').generate(text)  #利用text生成词云
    #必须设定中文字体才能显示  from:http://www.font5.com.cn/font_download.php?id=151&part=1237887120
    
    #显示词云
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.show()
    

    在这里插入图片描述

    在这里插入图片描述
    from pexels.com


    ref
    https://amueller.github.io/word_cloud
    https://github.com/amueller/word_cloud
    https://blog.csdn.net/fyuanfena/article/details/52038984
    http://www.zyy1217.com/
    jieba
    http://www.cnblogs.com/fonttian/p/9819770.html
    https://blog.csdn.net/fontthrone/article/details/72782971
    https://blog.csdn.net/sinat_34022298/article/details/75943272
    encoding:
    https://blog.csdn.net/j2iayu7y/article/details/80193340
    http://python.jobbole.com/87145/
    http://www.cnblogs.com/fkissx/p/5417363.html

  • 相关阅读:
    一周最新示例代码回顾 (4/23–4/29)
    优酷的投票
    Google API获取用户信息
    CPU性能分析
    有意思的排序算法快速排序
    http响应LastModified和ETag以及asp.net web api实现
    java/C#多态漫谈
    有意思的排序算法插入排序
    [Architecture Pattern] Repository
    50个jQuery代码段帮你成为更出色的JS开发者
  • 原文地址:https://www.cnblogs.com/Tom-Ren/p/10235000.html
Copyright © 2011-2022 走看看