ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

wordcloud:利用fontawesome字体绘制图标词云图

2021-05-19 22:03:18  阅读:231  来源: 互联网

标签:plt 映射 wordcloud 字体 fontawesome import 图标


根据文本生成词云的操作很常见,在某些场景下,我们可以遇到图标也按照某种形状排列的情况,那么可以用生成词云图的方法生成这样的图标词云图吗?

如何应用fontawesome字体

当前最常见的图标字体就是web字体fontawesome,它常常用于web中。那么在matplotlib或者wordcloud中如何应用这种字体呢。

下载fontawesome字体

fontawesome也支持在桌面端使用,https://fontawesome.com/how-to-use/on-the-desktop/setup/getting-started即可下载fontawesome字体。

建立图标和Unicode之间的映射

字体有了,该如何应用呢?

fontawesome每个图标都有对应的Unicode,只要获取了图标和Unicode之间的对应关系就可以把图标当做普通的文本使用。

虽然https://fontawesome.com/cheatsheet提供了图标和Unicode之间的映射关系,但是还需要将其整理为适当的数据结构。

网上有很多提供这种映射关系的库,直接应用这些第三方库更方便一些。比如:

  • fontawesome:https://pypi.org/project/fontawesome/
  • pywaffle:https://pypi.org/project/pywaffle/

最后总结下要点:

  • 下载fontawesome字体
  • 利用第三方库构造图标和字符之间的映射关系

案例:利用fontawesome字体生成图标词云图

在这里插入图片描述

import numpy as np
from PIL import Image
from wordcloud import WordCloud
from matplotlib import pyplot as plt
from collections import Counter
from pywaffle.fontawesome_mapping import icons

# 利用pywaffle构造图标列表
text = list(icons['solid'].values())
# 生成字符、频率映射
word_counter = Counter(text)

# 构造词云
wc = WordCloud(font_path='Font Awesome 5 Free-Solid-900.otf',  # 字体路径
               width=400, 
               height=400, 
               mask=np.array(Image.open("1.jpg")), 
               max_words=500, 
               min_font_size=15,  
               max_font_size=45,  
               background_color='white', 
               colormap='Reds'
               )
# 根据字符、频率映射生成词云
wc.generate_from_frequencies(word_counter)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.tight_layout()
plt.show()

标签:plt,映射,wordcloud,字体,fontawesome,import,图标
来源: https://blog.csdn.net/mighty13/article/details/117041432

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有