Bootstrap

Python生成词云图

(一)下载第三方模块

1.wordcloud:它把我们带权重的关键词渲染成词云。
2.jieba:是一个分词模块,因为我是从一个txt文本里提取关键词,所以需要 jieba 来分词并统计词频。如果是已经有了现成的数据,不再需要它。
pip install wordcloud

pip install jieba
3.如果pip install wordcloud按装失败!请复制报错的链接,下载Visual C++2015,安装完毕再使用pip install wordcloud就可以了。
4.生产中文词云包错的解决方法:
从你电脑文件管理系统引入一个支持中文的文件即可!

选择的文件路径:C:/Windows/Fonts/simfang.ttf

(二)WordCloud类的使用

WordCloud构造方法的参数说明
font_path字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = ‘黑体.ttf’
width输出的画布宽度,默认为400像素
height输出的画布高度,默认为200像素
prefer_horizontal词语水平方向排版出现的频率,默认 0.9 (所以词语垂直方向排版出现频率为 0.1 )
mask如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread(‘读取一张图片.png’),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存。
scale按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍。
min_font_size显示的最小的字体大小
font_step字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差。
max_words显示的词的最大个数
stopwords设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS
background_color背景颜色,如background_color=‘white’,背景颜色为白色。
max_font_size显示的最大的字体大小
mode当参数为“RGBA”并且background_color不为空时,背景为透明。
relative_scaling词频和字体大小的关联性
color_func生成新颜色的函数,如果为空,则使用 self.color_func
regexp使用正则表达式分隔输入的文本
collocations是否包括两个词的搭配
colormap给每个单词随机分配颜色,若指定color_func,则忽略该方法。

实例演示01

项目结构:
这里写图片描述

from wordcloud import WordCloud
with open("test.txt" ,encoding="utf-8")as file:
    #1.读取文本内容
    text=file.read()
    #2.设置词云的背景颜色、宽高、字数
    wordcloud=WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
    background_color="black",width=600,
    height=300,max_words=50).generate(text)
    #3.生成图片
    image=wordcloud.to_image()
    #4.显示图片
    image.show()

结果显示:
这里写图片描述


实例演示02

from wordcloud import WordCloud
import jieba
#1.将字符串切分为单个字符
def chinese_jieba(text):
    wordlist_jieba=jieba.cut(text)
    space_wordlist=''.join(wordlist_jieba)
    return  space_wordlist
with open("test.txt" ,encoding="utf-8")as file:
    text=file.read()
    text=chinese_jieba(text)
    wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
                          background_color="black", width=600,
                          height=300, max_words=50,min_font_size=8).generate(text)
    image=wordcloud.to_image()
    image.show()

结果显示:
这里写图片描述


实例演示03

下载一张图片作为模板,并在该模板内填写文字。

from wordcloud import WordCloud
import jieba
import numpy
import PIL.Image as Image
#1.将字符串切分
def chinese_jieba(text):
    wordlist_jieba=jieba.cut(text)
    space_wordlist=" ".join(wordlist_jieba)
    return space_wordlist
with open("test.txt" ,encoding="utf-8")as file:
    text=file.read()
    text=chinese_jieba(text)
    #2.图片遮罩层
    mask_pic=numpy.array(Image.open("china.jpg"))
    #3.将参数mask设值为:mask_pic
    wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",mask=mask_pic).generate(text)
    image=wordcloud.to_image()
    image.show()

结果显示:
这里写图片描述


学习视频:https://www.365yg.com/a6461455837910008334

;