一行代码教你玩转emoji
本文作者:喻淑敏,中南财经政法大学统计与数学学院
本文编辑:冀思慧
技术总编:王子一
Stata&Python云端课程来啦!
为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~爬虫俱乐部推出了Python编程培训课程、Stata基础课程、Stata进阶课程。报名课程即可加入答疑群,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦。我们在这篇推文的最后提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~
敲代码时,一些有趣操作的加入无疑可以使得兴趣 UP 好几个 LEVEL。你还记得曾经被滑稽刷屏的场景吗?
在这个各种表情包横行的时代,emoji表情仍占据了一席之地!
正好了解到 Python 支持 emoji 表情的输出,实现方式相当简单。这篇文章将带你了解一下,Python与emoji表情之间会有怎样的联系!
1、安装emoji库
pip install emoji d
import emoji
[v for k,v in emoji.EMOJI_UNICODE['en'].items() ]
1、表情包的编码可以参考:https://www.webfx.com/tools/emoji-cheat-sheet/
2、查看表情的unicode编码:https://www.unicode.org/emoji/charts/full-emoji-list.html
主要提供的是emoji表情及其对应的unicode转义字符。举例来说:\U0001f400
是🐀的转义字符
在此处,我们提供十二生肖emoji
表情对应的unicode
转义字符如下图所示:
2、内置函数
emojize()
和demojize()
,具体使用见下文。3、实践
emoji
库。import emoji
emojize()
和demojize()
使用指南。友友们也可以自己动手试试哟~# 默认的表情可以直接通过表情的字符实现
print(emoji.emojize('Python is :thumbs_up:')) # 输出为 Python is 👍
# 有些特殊的表情需要指定 use_aliases=True 参数才可以实现
print(emoji.emojize('Sleeping is :zzz:', use_aliases=True)) # 输出为 Sleeping is 💤
# 同时也支持反向操作
print(emoji.demojize('脑阔疼 🙉')) # 输出为 脑阔疼 :hear-no-evil_monkey:
要快乐呀 露出你的笑容叭~
#要快乐 多笑笑呀
print(emoji.emojize(":smile: :laughing: :smiley: :blush:", use_aliases=True))
送你几朵小红花呀~
#送你几朵小红花
print(emoji.emojize(":rose: :rose: :rose: :rose:", use_aliases=True))
4、两个小游戏
游戏一
游戏要求:将十二生肖生成一幅散点图。
具体步骤如下:
1、生成散点图中的x、y取值
import random
x=np.arange(1,13)
y=random.uniform(0,12)+x
print(x)
print(y)
2、定义函数mark1,为生成标签变量做函数准备
def mark1(a):
if a== 1:
return emoji.emojize("\U0001f400")
elif a==2:
return emoji.emojize("\U0001f300")
elif a==3:
return emoji.emojize("\U0001f390")
elif a==4:
return emoji.emojize("\U0001f411")
elif a==5:
return emoji.emojize("\U0001f410")
elif a==6:
return emoji.emojize("\U0001f404")
elif a==7:
return emoji.emojize("\U0001f408")
elif a==8:
return emoji.emojize("\U0001f412")
elif a==9:
return emoji.emojize("\U0001f434")
elif a==10:
return emoji.emojize("\U0001f437")
elif a==11:
return emoji.emojize("\U0001f418")
else:
return emoji.emojize("\U0001f43a")
for i in x:
print(mark1(i))
3、生成新变量var作为散点图的点标签,其中变量的取值为十二生肖
#把mark1(x)生成一个变量var放入散点图当点标签呢
var = [mark1(i) for i in range(1,13)]
print(var)
4、绘制散点图
#绘制散点图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
fig=plt.figure(figsize=(8,6)) #新建画布
ax=plt.subplot(1,1,1) #子图初始化
ax.scatter(x,y) #绘制散点图
ax.set_title("动物emoji一览") #设置图例
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.xticks(np.arange(1,13))
5、给散点图加点标签
#给散点加emoji表情标签
for i in range(len(x)):
ax.text(x[i], y[i], var[i],
fontsize=20, color = "blue", style = "italic", weight = "light",
verticalalignment='center', horizontalalignment='center',rotation=0)
plt.show()
matplotlib
是带有emoji
语言的,这与中文标签plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文
是一致的fontname='Segoe UI Emoji'
。#给散点加emoji表情标签
for i in range(len(x)):
ax.text(x[i], y[i], var[i],fontname='Segoe UI Emoji',
fontsize=20, color = "blue", style = "italic", weight = "light",
verticalalignment='center', horizontalalignment='center',rotation=0)
plt.show()
在这里介绍plt.text(x,y,s)
,语法如下:
matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=False, **kwargs)
x, y:表示坐标;
s:字符串文本;
fontdict:字典,可选;
kw:
fontsize:字体 (default=12)
horizontalalignment:文本信息的水平对齐方式(default=‘center’、简写为ha=’cener’)
verticalalignment:文本信息的垂直对其方式 (default=’center’、简写为va=’center’)
fig.text()(fig = plt.figure(…))
ax.text()(ax = plt.subplot(…))
最后附上游戏一完整代码:
###游戏一完整代码###
import random
x=np.arange(1,13)
y=random.uniform(0,12)+x
print(x)
print(y)
#生成散点图标签
def mark1(a):
if a== 1:
return emoji.emojize("\U0001f400")
elif a==2:
return emoji.emojize("\U0001f300")
elif a==3:
return emoji.emojize("\U0001f390")
elif a==4:
return emoji.emojize("\U0001f411")
elif a==5:
return emoji.emojize("\U0001f410")
elif a==6:
return emoji.emojize("\U0001f404")
elif a==7:
return emoji.emojize("\U0001f408")
elif a==8:
return emoji.emojize("\U0001f412")
elif a==9:
return emoji.emojize("\U0001f434")
elif a==10:
return emoji.emojize("\U0001f437")
elif a==11:
return emoji.emojize("\U0001f418")
else:
return emoji.emojize("\U0001f43a")
for i in x:
print(mark1(i))
#把mark1(x)生成一个变量var放入散点图当点标签呢
var = [mark1(i) for i in range(1,13)]
print(var)
#生成散点图、
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
fig=plt.figure(figsize=(8,6)) #新建画布
ax=plt.subplot(1,1,1) #子图初始化
ax.scatter(x,y) #绘制散点图
ax.set_title("动物emoji一览") #设置图例
ax.set_xlabel("x")
ax.set_ylabel("y")
plt.xticks(np.arange(1,13))
#给散点加emoji表情标签
for i in range(len(x)):
ax.text(x[i], y[i], var[i],fontname='Segoe UI Emoji',
fontsize=20, color = "blue", style = "italic", weight = "light",
verticalalignment='center', horizontalalignment='center',rotation=0)
plt.show()
游戏二
游戏要求:想要绘制一个简单的emoji人物表情直方图,我们从emoji库中选出几个emoji表情,并对其绘制直方图
#绘制直方图
import matplotlib.pyplot as plt
a = {'🧑': 10, '👩': 23, '👨': 13, '🙅': 10, '🧒': 13}
ax = plt.subplot(111)
ax.bar(range(1,6), a.values())
for label, x, y in zip(a.keys(), range(1,6), a.values()):
plt.annotate(
label,
xy=(x, y), xytext=(10,10),
textcoords='offset points', ha='right', va='bottom',
bbox=dict(boxstyle='round,pad=0.5', alpha=0),
fontname='Segoe UI Emoji',
fontsize=20)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.set_xticks([])
plt.show()
plt.annotate(xy,xytext)
,语法如下:matplotlib.pyplot.annotate(**args*, ***kwargs*)
xy:被注释的地方
xytext:插入文本的地方
5、结语
腾讯课堂课程二维码
对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!
往期推文推荐
票房遇冷的春节档口碑冠军丨《狙击手》影评分析
学习丰县,营造良好营商环境!
大国丢娃图:从川渝到徐州!
丰县“失火”,殃及徐州:股市超跌近30亿!
Unicode转义字符——编码与解码
徐州!徐州!
B站弹幕爬虫——冬奥顶流冰墩墩&雪容融
不会用Stata做描述性统计表?so easy!
丰沛之地:备足姨妈巾
过年啦,用Python绘制一幅属于你的春联吧!
登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅【基础篇】查找并输出子字符串的定位
Stata中的小清新命令——添加观测值
PCA(主成分分析法)降维——Python实现
超好用的事件研究法
如何绘制任泽平《鼓励生育基金》的几幅图
Python 第六天——字符串
findname——想要什么找什么
Python字符串之“分分合合”
PDF转docx可批量操作?——wordconvert的小技巧
考研之后,文科生需以“do”躬“do”!
手绘五星兴家国——用Stata绘制五星红旗
Seminar丨董事会的性别多样化和企业创新:来自国际的证据Python与数据库交互——窗口函数
Stata之post命令——数据邮递爬虫俱乐部成员的Stata学习经验分享来啦!
Seminar丨2002年萨班斯·奥克斯利法案的经济后果我几乎画出了“隔壁三哥”家的国旗
Python基础——三大数字类型,你都了解吗?如何用Stata绘制带指向性箭头标注的图像
Seminar丨荐仆贷款——19世纪中国的信任辅助贷款 【技能篇】多进程队列间通信
Seminar丨公司董事会的人才增长:来自中国的证据
正则表达式--懒惰模式
爬完独立董事的年薪,我的眼镜跌破了!关于我们
微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。
此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。
投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。