用python画颗爱心祝生日快乐_Python 一键生成漂亮的生日快乐词云!
前段时间写了几篇关于生成词云的文章,其中包括:
等等,但是这几篇文章的转化对象都必须是多词汇组成的,也就是说他们生成词云的条件是词组必须够多,只有一两个词的话无法生成完整词云。
最近遇到许多朋友有特殊的需求,他们只想把 【名字】和【生日快乐】两个词组在一起,祝他人生日快乐,不想弄太复杂的东西,基于前面两篇文章是无法做到的。今天我们就来说说如何用这么少的词汇生成漂亮的词云。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
输入以下命令安装我们所需要的依赖模块:
pip install wordcloud == 1.5.0
pip install scipy == 1.1.0
pip install multidict == 4.5.2
pip install matplotlib == 2.2.4
pip install fire == 0.2.1
pip install numpy == 1.16.4
看到 Successfully installed xxx 则说明安装成功。或阅读原文获得本文全部代码,然后进入文件夹,输入一行命令安装所有依赖:
pip install -r requirements.txt
如果你不想折腾代码,安装完依赖后,输入以下命令就可以生成你的词云:
python birthday.py 图片位置 对象姓名
如:
python birthday.py example.png 宝典哥
2.编写代码
首先是引入词云对象,并初始化【生日快乐】和对方姓名:
words = multidict.MultiDict()
# 生日快乐和姓名的权重必须先初始化两个最大权重的
words.add('生日快乐', 10)
words.add(name, 12)
细心的读者可能发现了,我们在这里用了MultiDict,这主要是因为wordcloud只允许接受【字典】数据结构,而Python内置的字典不允许重复值,所以我们只能引入multidict模块。
然后是插入新的生日快乐词云和对方姓名:
# 随意插入新的词语
for i in range(1000):
words.add('生日', numpy.random.randint(1, 5))
words.add('快乐', numpy.random.randint(1, 5))
words.add(name, numpy.random.randint(1, 5))
然后我们需要对图片进行一些处理,现在网络上的图片很多都包含一些杂色,因此需要把这些杂色去掉:
def transform_format(val):
# 用于去除杂色
if val[0] > 245 and val[1] > 245 and val[2] > 245:
val[0] = val[1] = val[2] = 255
return val
else:
return val
然后引入图片,去除杂色:
# 设定图片
bimg = imread(file)
for color in range(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)
生成词云并渲染:
# 生成词云
bimgColors = ImageColorGenerator(bimg)
# 渲染词云
plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.savefig(name+'.png')
plt.show()
完整代码如下:
# coding:utf-8
# Python 实用宝典
# 2020/03/23
import numpy
import multidict
import matplotlib.pyplot as plt
from scipy.misc import imread
from wordcloud import WordCloud, ImageColorGenerator
def transform_format(val):
# 用于去除杂色
if val[0] > 245 and val[1] > 245 and val[2] > 245:
val[0] = val[1] = val[2] = 255
return val
else:
return val
def gen_happy_birthday_cloud(file, name):
words = multidict.MultiDict()
# 生日快乐和姓名的权重必须先初始化两个最大权重的
words.add('生日快乐', 10)
words.add(name, 12)
# 随意插入新的词语
for i in range(1000):
words.add('生日', numpy.random.randint(1, 5))
words.add('快乐', numpy.random.randint(1, 5))
words.add(name, numpy.random.randint(1, 5))
# 设定图片
bimg = imread(file)
for color in range(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)
# 生成词云
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.整合一句运行
接下来,我们使用上次提到的 一行命令实现功能 将这个功能打包成输入命令就能运行的程序,比如:
python birthday.py 图片 宝典哥
嘛,在完整代码最后面加一行语句就行了:
import fire
fire.Fire(gen_happy_birthday_cloud)
当然,别忘了还要import fire模块。最后实验一下:
python birthday.py example.png 宝典哥
我们的文章到此就结束啦,如果你喜欢我们今天的Python 教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦
有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典
用python画颗爱心祝生日快乐_Python 一键生成漂亮的生日快乐词云!相关推荐
- python编程生日快乐图片_Python 一键生成漂亮的生日快乐词云!
前段时间写了几篇关于生成词云的文章,其中包括: Python 情人节超强技能 导出微信聊天记录生成词云 Python 绘制悼念的词云蜡烛 等等,但是这几篇文章的转化对象都必须是多词汇组成的,也就是说他 ...
- 用python画颗爱心祝生日快乐_Python画颗爱心祝生日快乐
年年有今日,岁岁有今朝,为了幸福生活和家庭和谐,我家那位每年的生日是必须要认真准备认真过的.蛋糕和生日礼物是不能少的,更重要的是我一定要陪在身边.除此之外,今年再玩上一点花样,用Python来画颗心出 ...
- 用python画颗爱心祝生日快乐_新学者如何用python祝女朋友生日快乐?
谢邀. 其实这是一个蛮好的问题,既能激发自己继续学习的兴趣,又能哄女朋友开心,何乐而不为呢? 作为一名程序员,写一个脚本再简单不过了,难的是如何配上动人的文字和图片,让女朋友开心,所以这种搭配,我称之 ...
- 用python画颗爱心祝生日快乐_python图特尔图书馆写“生日快乐”,Pythonturtle,库写...
1.首先要CTRL+R然后cmd进入命令行,输入pip install turtle安装第三方库 2.打开python IDE,如下图,点击"File",选择"New F ...
- python节日快乐_【python】一键生成漂亮的节日快乐词云图
一键生成漂亮的节日快乐词云图,给女神一个特别的礼物~ # Python 实用宝典 # 2020/03/23 先看效果图: 代码传送门: import numpy import multidict im ...
- 【Python】程序员也可以很会撩:如何一键生成漂亮的生日快乐词云
文章目录 前言 一.准备 二.编写代码 1.导入 2.读入数据 3.整合成一句运行 总结 前言 - 前段时间写了几篇关于生成词云的文章,其中包括: Python 情人节超强技能 导出微信聊天记录生成词 ...
- python统计txt文件中文词频_Python 中文文件统计词频 + 中文词云
1. 词频统计: 1 importjieba2 txt = open("threekingdoms3.txt", "r", encoding='utf-8'). ...
- Python中使用wordcloud生成漂亮的中文词云
场景 实现 新建文件夹ChinaMapWordCloud 文件夹下新建fonts目录用于存放字体. 新建ChinaMap.py from wordcloud import WordCloud impo ...
- 就算会用python画颗心,可你依然还是只单身狗
就算会用python画颗心,可你依然还是只单身狗
最新文章
- 11210怎么等于24_【Python】鸡兔同笼怎么“妙解”?
- java math round小数_Java Math round() 使用方法及示例
- tomcat temp 大量 upload 文件_原创 | 浅谈URI中的任意文件下载
- 失心漂亮的个人html引导页面源码
- vertical-align和line-height的深入应用
- Base64编码对照表
- 面试前hr加了微信,面试后是否可以向hr询问面试结果?
- Book04--修改软件的艺术:构建易维护代码的9条最佳实践
- nfc读卡java开发,Android实现读取NFC卡卡号示例
- AM437x——LED裸机
- 【2016阿里安全峰会】“安全攻防”烧脑博弈全解读【附PDF下载】
- nginx部署访问phpadmin
- 给电脑文件批量重命名和更改后缀名
- word文档无法保存问题
- Linux下浏览器的选择
- 一个工作了三年的社会人士与即将毕业的研究生对话:应届生什么时候准备找工作,如何准备?
- 参考文献格式字号字体_论文格式要求及字体大小
- 苹果隐藏app_iOS14隐藏功能,很实用!附部分BUG解决方案
- 收藏的网页!!!(随时更新)
- h5拼手气红包java_Java模拟微信发红包(普通红包、拼手气红包)
热门文章
- C# 使用数据库和MenuStrip动态生成菜单
- python之dir函数
- Web数据挖掘在电子商务中的应用
- experiment: State machine
- C# 第六章『交互式图形界面』◆第5节:FolderBrowserDialog类、DialogResult枚举
- Java 内嵌的Derby数据库基本使用
- 网页开发的尺寸单位 px,百分比,em,rem
- linux虚拟专用网络设置,linux 搭建 虚拟专用网络 (pptpd )
- 小程序首页不显示tabbar,而非首页显示tabbar的方法
- Linux内核的红黑树源码实现以及调用