全网最全,漂亮的词云,Python实现

最近在写工作汇报PPT时,遇到了分析高频的词语的展示问题。

如何才能很好地展示各种词语之间的关系呢?

经过研究发现,采用词云可以很好地体现词语之间的关系,

同时,让我们的PPT也美观美丽。

使用Python可以很容易实现美丽的词云,其他不多说,直接上源代码。

没有的Python包可以通过下面命令安装。

pip install xx

完整源代码如下

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from stylecloud import gen_stylecloud


def text_cloud():
    """中文文本词云"""
    txt = '在青春之书里,我们同在一行字之间。 被窝是青春的坟墓。 关于少年时代,冷暖自知,最朴素的生活,与最遥远的梦想。 这一切将在被回忆肆意篡改'
    # 准确分词
    words = jieba.lcut(txt)
    # 空格拼接
    newtxt = ''.join(words)
    wordcloud = WordCloud(background_color='white',  # 设置背景颜色为白色
                          font_path="msyh.ttc").generate(newtxt)
    wordcloud.to_file('text_cloud.png')
    print('绘图text_cloud成功!')


def text_cloud_english():
    """英文文本词云"""
    # 文本数据
    text = 'When I say I know you,I mean I knew you yesterday. I do not know you actually now'

    # 准备禁用词,需要为set类型
    stopwords = set(['I', 'do'])
    # 设置参数,创建WordCloud对象
    wc = WordCloud(
        width=200,  # 设置宽为400px
        height=150,  # 设置高为300px
        background_color='white',  # 设置背景颜色为白色
        stopwords=stopwords,  # 设置禁用词,在生成的词云中不会出现set集合中的词
        max_font_size=100,  # 设置最大的字体大小,所有词都不会超过100px
        min_font_size=10,  # 设置最小的字体大小,所有词都不会超过10px
        max_words=20,  # 设置最大的单词个数
        scale=2  # 扩大两倍
    )
    # 根据文本数据生成词云
    wc.generate(text)
    # 保存词云文件
    wc.to_file('text_eng.jpg')
    print('绘图img_eng成功!')


def img_cloud():
    """图片轮廓词云"""
    # 读取图片,换成自己想要的图片
    im = np.array(Image.open("bg.png"))
    txt = '满纸荒唐言,一把辛酸泪!都云作者痴,谁解其中味?人生本是孤寂,热闹都是强装。看叶子绿又黄,心头一点凉。'
    wordcloud = WordCloud(background_color="white",
                          font_path="msyh.ttc",
                          width=800,
                          height=600,
                          max_words=200,
                          max_font_size=80,
                          mask=im,
                          contour_width=3,
                          contour_color='steelblue'
                          ).generate(txt)
    wordcloud.to_file('img_img.png')
    print('绘图img_img成功!')


def icon_cloud():
    """图标轮廓词云"""
    # 读取文件
    f = open('test.txt', 'r', encoding='utf-8')
    txt = f.read()
    f.close()

    # 切割分词
    wordlist = jieba.cut_for_search(''.join(txt))
    result = ' '.join(wordlist)

    gen_stylecloud(text=result,
                   icon_name='fas fa-plane', # 更多查看网址https://fontawesome.com/
                   # 调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6]
                   palette='cartocolors.qualitative.Bold_5',
                   font_path='msyh.ttc',
                   background_color='white',
                   output_name='img_icon.png',
                   custom_stopwords=['你', '我', '她']
                   )
    print('绘图icon_cloud成功!')


if __name__ == '__main__':
    text_cloud()
    text_cloud_english()
    img_cloud()
    icon_cloud()

效果图如下:

全网最全,美丽的词云,Python实现

全网最全,美丽的词云,Python实现

全网最全,美丽的词云,Python实现

全网最全,美丽的词云,Python实现

你学会了吗?

喜爱的请您点下关注!我将持续提供工作中实用的工具和技术。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
阿列克塞马克西莫维奇彼什科夫的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容