Python stylecloud制作酷炫的词云图

stylecloud是wordcloud优化改良版,操作简单,直接调用。

 

  • 可以使用 Font Awesome 提供的免费图标更改词云的形状;

  • 通过 palettable 更改调色板以自定义风格,更改背景颜色;

  • 添加梯度使颜色按照特定方向流动。


1、基本说明

首先安装stylecloud和jieba库,jieba主要用来做语义分割用,因为使用的时候会遇到文本解析


pip install -i https://pypi.tuna.tsinghua.edu.cn/simple stylecloud
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba

gen_stylecloud 的默认参数

def gen_stylecloud(text=None,
                   file_path=None,   # 输入文本/CSV 的文件路径
                   size=512,  # stylecloud 的大小(长度和宽度)
                   icon_name='fas fa-flag',  # stylecloud 形状的图标名称(如 fas fa-grin)。[default: fas fa-flag]
                   palette='cartocolors.qualitative.Bold_5',  # 调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6]
                   colors=None,
                   background_color="white",  # 背景颜色
                   max_font_size=200,  # stylecloud 中的最大字号
                   max_words=2000,  # stylecloud 可包含的最大单词数
                   stopwords=True,  # 布尔值,用于筛除常见禁用词
                   custom_stopwords=STOPWORDS,
                   icon_dir='.temp',
                   output_name='stylecloud.png',   # stylecloud 的输出文本名
                   gradient=None,  # 梯度方向
                   font_path=os.path.join(STATIC_PATH,
'Staatliches-Regular.ttf'), # stylecloud 所用字体
                   random_state=None,  # 控制单词和颜色的随机状态
                   collocations=True,
                   invert_mask=False,
                   pro_icon_path=None,
                   pro_css_path=None):

在 word.txt 中有下面的一段话


Python面向对象---类的基本使用
面向对象
类(class):是一种用来描述具有相同属性和方法的对象的集合。
类变量:类变量在整个实例化的对象中是公用的。一般定义在类中且在函数体之外。
方法:类中的函数
数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
局部变量:定义在方法中的变量,只作用于当前实例的类。
实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。就像我们定义一个fruit(水果)类,然后又定义了一个fruit类的派生类apple(苹果),它有着fruit类的一些属性和方法,也有着自己的一些独特的属性和方法,和fruit类是一种’is-a’的关系。
实例化:类的一个具体对象,类像当于一个模板,只有我们将其实例化为一个对象后才能对其进行相应的操作。
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

默认情况下,词云的形状是一面旗帜


# -*- coding: utf-8 -*-

import jieba
from stylecloud import gen_stylecloud


def cloud(file_name):
with open(file_name, 'r', encoding='utf8') as f:
        word_list = jieba.cut(f.read())
        result = " ".join(word_list)  # 分词用 隔开
# 制作中文云词
        gen_stylecloud(text=result,
                       font_path='C:\\Windows\\Fonts\\simhei.ttf',
                       output_name='t1.png',
                       )  # 必须加中文字体,否则格式错误


if __name__ == "__main__":
    file_name = './word.txt'
    cloud(file_name)

使用 Font Awesome 提供的免费图标更改词云的形状(不用自己找形状)

https://fontawesome.dashgame.com/

选择某个图标,右击复制,把这个图标内容粘贴到代码即可


# -*- coding: utf-8 -*-

import jieba
from stylecloud import gen_stylecloud


def cloud(file_name):
with open(file_name, 'r', encoding='utf8') as f:
        word_list = jieba.cut(f.read())
        result = " ".join(word_list)  # 分词用 隔开
# 制作中文云词
        gen_stylecloud(text=result,
                       font_path='C:\\Windows\\Fonts\\simhei.ttf',
                       palette='cartocolors.diverging.Fall_4',
                       icon_name='fas fa-car', 
                       output_name='t4.png',
                       )  # 必须加中文字体,否则格式错误


if __name__ == "__main__":
    file_name = './word.txt'
    cloud(file_name)

3、关键字模式

如果是提供关键字来生成词云,例如word1.txt


Python
ython
thon
hon
on
n
Matlab
atlab
tlab
lab
ab
b
数学分析
学分析
分析
析
大数据
数据
据
算法
法
人工智能
工智能
智能
能
创新
新
创业
业
科技
技
我也不知道
也不知道
不知道
知道
道
import jiebafrom stylecloud import gen_stylecloud

def cloud(file_name):    with open(file_name, 'r', encoding='utf8') as f:        lines = f.readlines()        result = ''        for line in lines:            result += ' ' + line        # 制作中文云词        gen_stylecloud(text=result,                       font_path='C:\\Windows\\Fonts\\simhei.ttf',                       output_name='t10.png',                       )  # 必须加中文字体,否则格式错误

if __name__ == "__main__":    file_name = './word1.txt'    cloud(file_name)

最后分享一个网址,可以直接得到词云,

http://www.wordart.cc/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值