数据可视化-----标签云的实现

使用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,
上述操作完成后,按道理就可以成功显示标签云的结果了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值