当前位置: 首页 > 后端技术 > Python

Python一键生成漂亮的生日快乐词云!

时间:2023-03-26 15:02:36 Python

前段时间写了好几篇关于词云生成的文章,包括:Python情人节超强技巧导出微信聊天记录生成词云Python绘制词云蜡烛慰问等,但是这些文章的转换对象都必须由多个词组成,也就是说,它们生成词云的条件是必须有足够的词组。如果只有一两个词,则无法生成完整的词云。最近,我遇到了很多有特殊需要的朋友。他们只是想把[姓名]和[生日快乐]这两个短语组合起来,祝别人生日快乐。他们不想让事情变得太复杂。根据前两篇文章,他们做不到。.今天我们就来说说,这么小的词汇量,如何生成漂亮的词云。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,请访问这篇文章:超详细的Python安装指南进行安装。Windows环境打开Cmd(开始-运行-CMD),苹果系统环境打开Terminal(command+空格进入Terminal),准备开始输入命令安装依赖。当然,我推荐大家使用VSCode编辑器,复制本文代码,在编辑器下方的终端中安装依赖模块。多么惬意的一件事:Python编程的最佳搭档——VSCode详解指南。输入以下命令安装我们需要的依赖模块:pipinstallwordcloud==1.5.0pipinstallscipy==1.1.0pipinstallmultidict==4.5.2pipinstallmatplotlib==2.2.4pipinstallfire==0.2.1pipinstallnumpy==1.16.4如果看到Successfullyinstalledxxx,说明安装成功。或者公众号后台回复happybirthday获取本文所有代码,然后进入文件夹,输入一行命令安装所有依赖:pipinstall-rrequirements.txt如果不想折腾代码,安装好依赖后,输入以下命令生成你的词云:pythonbirthday.py图片位置对象名称如:pythonbirthday.pyexample.png宝典大哥2.写代码首先引入词云对象,并初始化[HappyBirthday]和对方的名字:words=multidict.MultiDict()#happybirthday和name的权重要先初始化权重最大的两个words.add('HappyBirthday',10)words.add(name,12)细心的读者可能已经注意到,我们这里使用了MultiDict,这主要是因为wordcloud只允许接受[dictionary]数据结构,而Python内置的字典不允许重复值,所以只能引入multidict模块。然后插入新的生日快乐词云和对方的名字:#Insertnewwordsatwillforiinrange(1000):words.add('birthday',numpy.random.randint(1,5))words.add('Happy',numpy.random.randint(1,5))words.add(name,numpy.random.randint(1,5))然后我们需要对图片做一些处理,现在图片很多Internet包含一些噪声,因此需要去除这些噪声:deftransform_format(val):#如果val[0]>245andval[1]>245andval[2]>245,则用于去除噪声:val[0]=val[1]=val[2]=255returnvalelse:returnval然后引入图片去噪:#设置图片bimg=imread(file)forcolorinrange(len(bimg)):bimg[color]=list(map(transform_format,bimg[color]))wordcloud=WordCloud(background_color='white',mask=bimg,font_path='simhei.ttf').generate_from_frequencies(words)生成词云并渲染:#生成词cloudbimgColors=ImageColorGenerator(bimg)#渲染词云plt.axis("off")plt.imshow(wordcloud.recolor(color_func=bimgColors))plt.savefig(name+'.png')plt.show()完整代码如下:#coding:utf-8#Python实战宝典#2020/03/23importnumpyimportmultidictimportmatplotlib.pyplotaspltfromscipy.miscimportimreadfromwordcloudimportWordCloud,ImageColorGeneratordeftransform_format(val):#如果val[0]>245andval[1]>245andval[2]>245,则用于去除噪声:val[0]=val[1]=val[2]=255returnvalelse:returnvaldefgen_happy_birthday_cloud(file,name):words=multidict.MultiDict()#happybirthday和name的权重必须先初始化Weightedwords.add('HappyBirthday',10)words.add(name,12)#在range(1000)范围内为i随机插入新词:words.add('Birthday',numpy.random.randint(1,5))words.add('Happy',numpy.random.randint(1,5))words.add(name,numpy.random.randint(1,5))#设置图像bimg=imread(file)forcolorinrange(len(bimg)):bimg[color]=list(map(transform_format,bimg[color]))wordcloud=WordCloud(background_color='white',mask=bimg,font_path='simhei.ttf').generate_from_frequencies(单词)#生成词云bimgColors=ImageColorGenerator(bimg)#渲染词云plt.axis("off")plt.imshow(wordcloud.recolor(color_func=bimgColors))plt.savefig(name+'.png')plt.show()gen_happy_birthday_cloud('p2.png','宝典大哥')3.整合一句运行接下来我们使用上次说的一行命令来实现功能,并将这个功能封装成一个程序,输入命令即可运行,例如:pythonbirthday.py大哥图片集,在完整代码末尾加一行:importfirefire.Fire(gen_happy_birthday_cloud)当然最后实验不要忘记导入fire模块:pythonbirthday.pyexample.png宝典兄,我们的文章到此结束。如果喜欢我们今天的Python实战教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实用宝典不只是收藏欢迎来到公众号:Python实用宝典原文来自Python实用宝典:Python一键生成漂亮的生日快乐词云!