文章目录

  • 前言
  • 一、准备
  • 二、编写代码
    • 1.导入
    • 2.读入数据
    • 3.整合成一句运行
  • 总结

前言

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

Python 情人节超强技能 导出微信聊天记录生成词云

不过这几篇文章的转化对象都必须是多词汇组成的,也就是说他们生成词云的条件是词组必须够多,只有一两个词的话无法生成完整词云。

最近遇到许多朋友有特殊的需求,他们只想把 【名字】和【生日快乐】两个词组在一起,祝他人生日快乐,不想弄太复杂的东西,基于前面两篇文章是无法做到的。所以今天我们就来说说如何用这么少的词汇

一、准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

请选择以下任一种方式输入命令安装依赖:

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
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 宝典哥

二、编写代码

1.导入

首先是引入词云对象,并初始化【生日快乐】和对方姓名:

words = multidict.MultiDict()
# 生日快乐和姓名的权重必须先初始化两个最大权重的
words.add('生日快乐', 10)
words.add(name, 12)

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

细心的读者可能发现了,我们在这里用了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):"""用于去除杂色Args:val (list): RGB颜色组Returns:list: 去除杂色后的组"""if val[0] > 245 and val[1] > 245 and val[2] > 245:val[0] = val[1] = val[2] = 255return valelse: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-8import numpy
import fire
import multidict
import matplotlib.pyplot as plt
from scipy.misc import imread
from wordcloud import WordCloud, ImageColorGeneratordef transform_format(val):"""用于去除杂色Args:val (list): RGB颜色组Returns:list: 去除杂色后的组"""if val[0] > 245 and val[1] > 245 and val[2] > 245:val[0] = val[1] = val[2] = 255return valelse:return valdef gen_happy_birthday_cloud(file, name):"""生成生日快乐词云Args:file (str): 词云背景图name (str)): 对方的姓名"""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()fire.Fire(gen_happy_birthday_cloud)

3.整合成一句运行

接下来,我们使用上次提到的 一行命令实现功能 将这个功能打包成输入命令就能运行的程序,比如:

python birthday.py 图片 宝典哥

嘛,在完整代码最后面加一行语句就行了:

import fire

fire.Fire(gen_happy_birthday_cloud)

当然,别忘了还要import fire模块。

最后实验一下:

python birthday.py example.png 宝典哥

总结

怎么样,效果不错吧?喜欢的话记得点一个在看哦!请持续关注徐浪老师!

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

  1. python编程生日快乐图片_Python 一键生成漂亮的生日快乐词云!

    前段时间写了几篇关于生成词云的文章,其中包括: Python 情人节超强技能 导出微信聊天记录生成词云 Python 绘制悼念的词云蜡烛 等等,但是这几篇文章的转化对象都必须是多词汇组成的,也就是说他 ...

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

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

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

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

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

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

  5. python程序员招聘信息-为什么企业很难招聘到好的python程序员?

    原标题:为什么企业很难招聘到好的python程序员? 近年来,Python 横扫了各大语言排行榜.在世界脚本语言排行榜中,Python 强势登顶;在 TIOBE 编程语言排行榜中,Python地位也在 ...

  6. python程序员在公司都是做什么的-为什么企业很难招聘到好的python程序员?

    近年来,Python 横扫了各大语言排行榜.在世界脚本语言排行榜中,Python 强势登顶;在 TIOBE 编程语言排行榜中,Python地位也在逐月攀升,越来越受广大开发者的欢迎.对比长盛不衰的 J ...

  7. python程序员爬取分析20万场吃鸡数据,带妹吃鸡,终成人生赢家

    首先,神枪镇楼 python程序员爬取分析20万场吃鸡数据,带妹吃鸡,终成人生赢家 吃鸡,撩妹神器 吃鸡游戏受到很多年轻人的喜爱,用户量也非常大.有很多地图,场景逼真,技术玩法,增加了游戏可玩性.而且 ...

  8. 520 情人节 :属于Python 程序员的脱单攻略大合集(视频版)

    作者| Python 编程时光 责编| Carol 情人节年年有,但今年的 5.20 要比以往的更有意义. 2020.05.20 ,爱你爱你我爱你,如果再卡个时间(13:14),那就是 爱你爱你我爱你 ...

  9. Python程序员Debug利器,和Print说再见 | 技术头条

    整理 | Rachel 责编 | Jane 出品 | Python大本营(id:pythonnews) [导语]程序员每日都在和 debug 相伴.新手程序员需要学习的 debug 手段复杂多样,设置 ...

最新文章

  1. 【pytorch】nn.LSTM的使用
  2. UVA - 11214Guarding the Chessboard守卫棋盘(迭代加深搜索)
  3. php两个数组找公共部分,PHP开发中如何查找两个数组的交集
  4. P4245-[模板]任意模数多项式乘法
  5. mysql client 未开启_Django+mysqlclient未关闭数据库连接
  6. linux中如何运行html文件路径问题,Linux中如何查询运行文件的全路径的方法
  7. lvs,haproxy实现负载均衡
  8. 有效解决OneNote同步问题
  9. 《数据挖掘导论》学习 | 第十章 异常检测
  10. 元胞自动机简介(美赛复习一)
  11. 众神的盛宴!阿里巴巴数学竞赛颁奖典礼,在江湖中一直流传许久的传说一一现身!...
  12. Java项目源码下载SSM网上水果生鲜超市商城|电商购物系统
  13. 硬件设计1:常用元器件的选型理论依据
  14. 常见开源规则引擎对比分析
  15. 3D立体显示大屏幕拼接视频墙系统解决方案【转】
  16. PCB菜鸟入门教程——经验分享
  17. SpringMvc后端往往前端
  18. Composite Coloring(思维 数论(筛素数 分解质因数))
  19. C# 静态和非静态的区别
  20. java poi 动态导出word表格带合并效果

热门文章

  1. 树莓派GPIO 基础(一)
  2. 求最大公约数和最小公倍数的多种方法
  3. 如何把自己的苹果手机屏幕投射到电脑上
  4. 富途证券面试整理--前端
  5. GIVE 添加 bigWig 文件
  6. 关于计算机网络的英语演讲稿,幽默英语演讲稿
  7. Python 樱花树
  8. 将CSDN文章内容转成PDF文件使用教程
  9. 我又来分享来了,发现一个好的ide,免费的国产的,优秀的,自带md阅读器.那就是uni-app
  10. CAD梦想画图中“轻松手绘”功能使用方法