使用pytagcloud模块实现标签云
今天学习了数据可视化对标签云实现, 然后就找了一个实例进行练习,使用pytagcloud模块实现标签云。
使用pytagcloud模块实现标签云的过程如下:
首先;根据上面的说明文档,可以知道就是先安装pytagcloud;
pip install pytagcloud
然后继续在命令行中下安装包pygame,simplejson,安装这个包主要是为了后面的标签字体的选择,然后我是用的一个搜的大神的案例做的,对其代码进行实现:
#我的版本python 3.6.5
from pytagcloud import create_tag_image, make_tags
import re
import time
from collections import Counter
import datetime
# 去除内容中的非法字符 (Windows)
def validatecontent(content):
# '/\:*?"<>|'
rstr = r"[\/\\\:\*\?\"\<\>\|\.\*\+\-\(\)\"\'\(\)\!\?\“\”\,\。\;\:\{\}\{\}\=\%\*\~\·]"
new_content = re.sub(rstr, "", content)
return new_content
if __name__ == '__main__':
# 打印的语言
languages = input("选择打印英文按0,打印中文请按1,打印中英结合请按2(默认打印中英结合):")
language = 'Microsoft YaHei Mono'
try:
if languages == "0":
language = 'Lobster'
elif languages == "1":
language = 'Microsoft YaHei Mono'
elif languages == "2":
language = 'Microsoft YaHei Mono'
except:
language = 'Microsoft YaHei Mono'
# 打印的字体大小
fontszs = input("选择特大字体请按0,大字体请按1,中字体请按2,小字体请按3(默认大字体):")
fontsz = 90
try:
if fontszs == "0":
fontsz = 180
elif fontszs == "1":
fontsz = 120
elif fontszs == "2":
fontsz = 90
elif fontszs == "3":
fontsz = 60
except:
fontsz = 120
# 图片长宽
imglength = 1000
imgwidth = 800
try:
imglengths = int(input("请输入图片长(默认1000):"))
if isinstance(imglengths, int) == True:
imglength = imglengths
except:
imglength = 1000
try:
imgwidths = int(input("请输入图片宽(默认800):"))
if isinstance(imgwidths, int) == True:
imgwidth = imgwidths
except:
imgwidth = 800
# 背景颜色
rcolor = 255
gcolor = 255
bcolor = 255
try:
rcolors = int(input("请输入背景颜色RGB格式的R(0-255默认白色):"))
if isinstance(rcolors, int) == True:
rcolor = rcolors
except:
rcolor = 255
try:
gcolors = int(input("请输入背景颜色RGB格式的G(0-255默认白色):"))
if isinstance(gcolors, int) == True:
gcolor = gcolors
except:
gcolor = 255
try:
bcolors = int(input("请输入背景颜色RGB格式的B(0-255默认白色):"))
if isinstance(bcolors, int) == True:
bcolor = bcolors
except:
bcolor = 255
# 构造
# counts =[('cloud', 3),
# ('words', 2),
# ('code', 1),
# ('word', 1),
# ('appear', 1)]
arr = []
file = open('./data/sumary.txt', 'r')
data = file.read().split('\r\n')
for content in data:
contents = validatecontent(content).split()
for word in contents:
arr.append(word)
counts = Counter(arr).items()
# 用一个时间来命名
nowtime=time.strftime('%Y%H%M%S', time.localtime())
# 设置字体大小
tags = make_tags(counts, maxsize=int(fontsz))
# 生成图片
create_tag_image(tags, './result/' + str(nowtime) + '.png', size=(imglength, imgwidth), fontname=language,background=(int(rcolor), int(gcolor), int(bcolor)))
create_tag_image(tags,'cloud_large.png',size=(900,600), fontname='Microsoft YaHei Mono')
print(('已经储存至./result/' + str(nowtime) + '.png'))
在上述代码中需要注意到的是其中需要用的中文编码文件包Microsoft YaHei Mono.tff文件,该tff文件主要包含英文,和中文微软雅黑字体,可以到自己的python安装目录下的Lib\site-packages\pytagcloud\fonts中有没有相应的tff文字字体中,没有就需要下载了,网盘中有资源(Microsoft YaHei Mono.tff)提取码:oauf,
上述操作完成后,按道理就可以成功显示标签云的结果了。