python作爱心词云图

  • 学习笔记:转载文章,作了微小改动,原文链接
    https://blog.csdn.net/keith0812/article/details/78688757
  • 知识点
  1. python读取txt文本内容
  2. python获取图片内容
  3. 制作词云图
  • 准备工作
    (1)准备一张清晰的爱心图片
    (2)准备一个txt文件,这个是词云图的文字内容
    python作爱心词云图_第1张图片
  • 基于python3.7的完整代码
import jieba #中文分词包
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from os import path

#define the absolute path for directory
d = "C:\\Users\\GXP\\Desktop\\worldcloud"
#path.join实现文件地址的链接,open则打开相应的文件,read则读取相应的文件
text = open(path.join(d, 'love_words.txt')).read()

#if txt contain chinese words, recommand to use jieba model
chtext = ''
with open(path.join(d, 'love_words.txt'),'r') as fin:
    for line in fin.readlines():
        line = line.strip('\n')
        chtext += ' '.join(jieba.cut(line))

#调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组
backgroud_Image = np.array(Image.open(path.join(d, "love.png")))
#停用词可以如下定义,也可以在WordCloud中定义.停用词的增加和删除操作如下
stopwords = set(STOPWORDS) 


#绘制词云图
wc = WordCloud(
    background_color='white',# 设置背景颜色
    mask=backgroud_Image,# 设置背景图片
    font_path='C:\\Windows\\Fonts\\STZHONGS.TTF',  # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
    max_words=200, # 设置最大现实的字数
    stopwords = STOPWORDS,# 设置停用词,停用词则不再词云图中表示 也可以直接有字符串,设置停用词stopwords = 'to'
    max_font_size=150,# 设置字体最大值
    random_state=1,# 设置有多少种随机生成状态,即有多少种配色方案
    scale = 5#设置生成的词云图的大小
    #regexp = 'to'#设置词语文字段的解析的分隔字段
)

#传入需画词云图的文本,与该方法作用相同generate_from_text(text)
wc.generate(chtext)

# 展示图片
#根据原始背景图片的色调进行上色
image_colors = ImageColorGenerator(backgroud_Image)
plt.imshow(wc.recolor(color_func=image_colors))
#根据原始黑白色调进行上色
#plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3), interpolation='bilinear') #生成黑白词云图
#根据函数原始设置进行上色
#plt.imshow(wc)
 
#隐藏图像坐标轴
plt.axis("off")
plt.show()
 
# 保存生成的词云图
wc.to_file(path.join(d, "gengrate_love_star.png"))
  • 效果图
    python作爱心词云图_第2张图片
  • End and have a nice day!!!

你可能感兴趣的:(python学习,python,心形词云图,wordcloud,image)