词云

词云是一种数据呈现方式,本文用Pythonwordcloud包实现。

  • WordCloud() 的可选参数:
    • font_path:指定字体(otf和ttf)
    • width:词云宽度(默认400)
    • height:词云高度(默认200)
    • mask:蒙版(定制词云的形状)
    • min_font_size:最小字号(默认为4)
    • max_font_size:最大字号(默认为词云高度)
    • max_words:词的最大数量(默认200)
    • stopwords:将被忽略的停用词(若不指定则使用默认停用词词库)
    • background_color:背景颜色(默认为 black)
    • mode:默认为RGB模式(如果为RGBA模式且background_color设为None,则背景将透明)
  • 学习参考

英文词云

  • 代码

    1
    from wordcloud import WordCloud
    2
    import matplotlib.pyplot as plt
    3
    4
    # 打开文本
    5
    text = open('EnglishText.txt').read()
    6
    # 生成对象
    7
    wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
    8
    # 显示词云
    9
    plt.imshow(wc, interpolation='bilinear')
    10
    plt.axis('off')
    11
    plt.show()
    12
    # 保存到文件
    13
    wc.to_file('wordcloud.png')
  • 结果

中文词云

  • 代码

    1
    from wordcloud import WordCloud
    2
    import matplotlib.pyplot as plt
    3
    import jieba
    4
    5
    # 打开文本
    6
    text = open('xyj.txt').read()
    7
    # 中文分词
    8
    text = ' '.join(jieba.cut(text))
    9
    # 生成对象
    10
    wc = WordCloud(font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
    11
    # 显示词云
    12
    plt.imshow(wc, interpolation='bilinear')
    13
    plt.axis('off')
    14
    plt.show()
    15
    # 保存到文件
    16
    wc.to_file('wordcloud.png')
  • 结果

词云形状

  • 代码

    1
    from wordcloud import WordCloud
    2
    from PIL import Image
    3
    import numpy as np
    4
    import matplotlib.pyplot as plt
    5
    import jieba
    6
    7
    # 打开文本
    8
    text = open('xyj.txt').read()
    9
    # 中文分词
    10
    text = ' '.join(jieba.cut(text))
    11
    # 生成对象
    12
    mask = np.array(Image.open('mask.png'))  # 设置词云形状
    13
    wc = WordCloud(mask=mask, font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
    14
    # 显示词云
    15
    plt.imshow(wc, interpolation='bilinear')
    16
    plt.axis('off')
    17
    plt.show()
    18
    # 保存到文件
    19
    wc.to_file('wordcloud.png')
  • 结果

词云颜色

  • 代码

    1
    from wordcloud import WordCloud, ImageColorGenerator
    2
    from PIL import Image
    3
    import numpy as np
    4
    import matplotlib.pyplot as plt
    5
    import jieba
    6
    7
    # 打开文本
    8
    text = open('xyj.txt').read()
    9
    # 中文分词
    10
    text = ' '.join(jieba.cut(text))
    11
    # 生成对象
    12
    mask = np.array(Image.open('mask.png'))
    13
    wc = WordCloud(mask=mask, font_path='Hiragino.ttf', width=800, height=400, mode='RGBA', background_color=None).generate(text)
    14
    # 从图片中抽取颜色
    15
    image_colors = ImageColorGenerator(mask)
    16
    wc.recolor(color_func=image_colors)
    17
    # 显示词云
    18
    plt.imshow(wc, interpolation='bilinear')
    19
    plt.axis('off')
    20
    plt.show()
    21
    # 保存到文件
    22
    wc.to_file('wordcloud.png')
  • 结果