前段时间写了几篇关于生成词云的文章,其中包括:

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实用宝典

不只是一个宝典

欢迎关注公众号:Python实用宝典

原文来自Python实用宝典:Python 一键生成漂亮的生日快乐词云!

python编程生日快乐图片_Python 一键生成漂亮的生日快乐词云!相关推荐

  1. 用python画颗爱心祝生日快乐_Python 一键生成漂亮的生日快乐词云!

    前段时间写了几篇关于生成词云的文章,其中包括: 等等,但是这几篇文章的转化对象都必须是多词汇组成的,也就是说他们生成词云的条件是词组必须够多,只有一两个词的话无法生成完整词云. 最近遇到许多朋友有特殊 ...

  2. python节日快乐_【python】一键生成漂亮的节日快乐词云图

    一键生成漂亮的节日快乐词云图,给女神一个特别的礼物~ # Python 实用宝典 # 2020/03/23 先看效果图: 代码传送门: import numpy import multidict im ...

  3. 【Python】程序员也可以很会撩:如何一键生成漂亮的生日快乐词云

    文章目录 前言 一.准备 二.编写代码 1.导入 2.读入数据 3.整合成一句运行 总结 前言 - 前段时间写了几篇关于生成词云的文章,其中包括: Python 情人节超强技能 导出微信聊天记录生成词 ...

  4. Python中使用wordcloud生成漂亮的中文词云

    场景 实现 新建文件夹ChinaMapWordCloud 文件夹下新建fonts目录用于存放字体. 新建ChinaMap.py from wordcloud import WordCloud impo ...

  5. python如何写生日快乐图片_Python 生活第一周母校生日快乐

    逝者如斯夫,不舍昼夜,过的真快,python第一周的生活结束了,三月的第一个月零一个星期的生活结束了,该来个全面性总结了. 2019年9月27日我入职三月 10月28日,对我来说,真是具有非凡意义的一 ...

  6. python电影爬虫背景介绍_python爬虫-爬虫电影八佰词云

    #数据获取 importrequestsimportreimportcsvimportjiebaimportwordcloud#通过循环实现多页爬虫#观察页面链接规律#https://movie.do ...

  7. 【mmdetection小目标检测教程】三、使用sahi库切分高分辨率图片,一键生成coco格式数据集

    [mmdetection小目标检测教程]三.使用sahi库切分高分辨率图片,一键生成coco格式数据集 1.确认是否需要切分图像 2.子图切分 (1)安装sahi库 (2)基于sahi切图 本文我们将 ...

  8. Python编程,使用turtle画出漂亮的雪花--完整代码绘画实现洁白的雪绒花~~

    Python编程,使用turtle画出漂亮的雪花--完整代码实现洁白的雪绒花~~ Python中turtle库,可以方便的让你实现各种各样的功能.简单易用,有的时候能够创作出,你想像不到的漂亮图案.今 ...

  9. 利用Python做一个漂亮小姐姐词云跳舞视频

    最近不少小伙伴在学 Python,想找个好玩的练手项目. 那今天分享一个,简单,适合新手的 Python 小项目. 以下是具体项目: 本文将以哔哩哔哩–乘风破浪视频为例,you-get下载视频. 同时 ...

最新文章

  1. python文件操作举例
  2. mysql union 优化_mysql 5.7.3 对union all 的优化
  3. 未处理的异常: 0xC0000235: 由句柄所调用的 NtClose 已使用 NtSetInformationObject 以防止关闭。...
  4. Phoenix连接安全模式下的HBase集群
  5. POJ 3233 Matrix Power Series (矩阵分块,递推)
  6. Django,Ajax,Vue实现文章评论功能
  7. 信息学奥赛一本通(1152:最大数max(x,y,z))
  8. Chrome 76.0.3809.100(正式版本) (64 位) 版本 77.0.3865.90不显示网址中的www怎么解决...
  9. latex减少图片和图片解释文字之间的距离
  10. AIDE2.6.1安装及配置C/C++开发数据
  11. 将Chrome浏览器默认保存离线网页为“多个文件”设置为“单个文件”即单个mhtml文件
  12. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 4 周:选择期刊
  13. AutoCAD2018_注释及标注
  14. 基于WKT标准的空间参考系字符串及prj文件生成样例
  15. 尺规画图——三等分点
  16. canvas实现5张图片合成一张图片
  17. 谷歌面试题之扔鸡蛋的问题(蓝桥杯摔手机的问题)
  18. 2000-2020年上市公司制造业数据/制造业上市公司数据
  19. SQL 语法查询手册
  20. 图像mnf正变换_PCA和MNF变换及MNF错误

热门文章

  1. 解决elementUI轮播图点击跳转到相应页面的问题
  2. 第六章图-算法6.8普里姆算法
  3. 数藏超新星登场,百度超级链携手兔小猪发行“神游天外”系列藏品
  4. FastReport TfrxReport组件使用
  5. 死磕elasticsearch(七)搜索速度优化
  6. python代码耗时优化,你知道了吗?
  7. 9.3 挂钩API技术(HOOK API)
  8. 共享万物互联新生态 2017第二届eSIM技术与创新峰会圆满落幕
  9. Linux下autoTools工具集使用介绍
  10. 在线运行的Linux环境