zoukankan      html  css  js  c++  java
  • 词云wordcloud

    pip install wordcloud 
    没有报错,如果有错误可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud下载whl文件直接安装。 

    # -*- coding: utf-8 -*-
    __author__ = 'leilu'
    #wordcloud生成中文词云
    
    from wordcloud import WordCloud
    import codecs
    import jieba
    #import jieba.analyse as analyse
    from scipy.misc import imread
    import os
    from os import path
    import matplotlib.pyplot as plt
    from PIL import Image, ImageDraw, ImageFont
    
    
    # 绘制词云
    def draw_wordcloud():
        #读入一个txt文件
        comment_text = open('F:programMyProjectsclustering\fenci1.0wordseg_result.txt','r').read()
        #结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云
        cut_text = " ".join(jieba.cut(comment_text))
        d = path.dirname(__file__) # 当前文件文件夹所在目录
        color_mask = imread("Anne_Hathaway.png") # 读取背景图片
        cloud = WordCloud(
            #设置字体,不指定就会出现乱码
            font_path="HYQiHei-25J.ttf",
            #font_path=path.join(d,'simsun.ttc'),
            #设置背景色
            background_color='white',
            #词云形状
            mask=color_mask,
            #允许最大词汇
            max_words=2000,
            #最大号字体
            max_font_size=40
        )
        word_cloud = cloud.generate(cut_text) # 产生词云
        word_cloud.to_file("pjl_cloud4.jpg") #保存图片
        #  显示词云图片
        plt.imshow(word_cloud)
        plt.axis('off')
        plt.show()
    
    
    
    if __name__ == '__main__':
    
        draw_wordcloud()

    用法比较简单,注释很详细。有个坑人的地方在于font_path设置,尝试了一下几种形式均报错IO error: cannot open resource

    font = ImageFont.truetype("arial.ttf", 15),
    FONT_PATH = os.environ.get("FONT_PATH", "/Library/Fonts/Times New Roman.ttf"),
    font_path="汉仪旗黑25简.ttf",
    
    • 1
    • 2
    • 3
    • 4

    尝试了下述形式报错TypeError: init() got an unexpected keyword argument ‘FONT_PATH’

    FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "simhei.ttf"))
    • 1

    所以最后只有代码里的那两种形式可用,其中HYQiHei-25J.ttf文件是放在代码目录下的,但同样放在代码目录下的汉仪旗黑25简.ttf就找不到,应该是不支持中文名字吧。

    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    import jieba
     
    text_from_file_with_apath = open('/Users/hecom/23tips.txt').read()
     
    wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
    wl_space_split = " ".join(wordlist_after_jieba)
     
    my_wordcloud = WordCloud().generate(wl_space_split)
     
    plt.imshow(my_wordcloud)
    plt.axis("off")
    plt.show()
    View Code

    1~3 行分别导入了画图的库,词云生成库和jieba的分词库;

    4 行是读取本地的文件

    5~6 行使用jieba进行分词,并对分词的结果以空格隔开;

    7行对分词后的文本生成词云;

    8~10行用pyplot展示词云图。

  • 相关阅读:
    构建之法阅读笔记02
    四则运算2
    第一周学习进度条
    简单四则运算
    构建之法阅读笔记01
    简读《构建之法》,所想问题展示
    介绍
    典型用户和用户场景描述
    工作总结03
    工作总结02
  • 原文地址:https://www.cnblogs.com/nick477931661/p/9074725.html
Copyright © 2011-2022 走看看