首页 > 编程语言 >Python stylecloud制作酷炫的词云图

Python stylecloud制作酷炫的词云图

时间:2022-11-16 11:04:25浏览次数:72  
标签:stylecloud __ word name Python 酷炫 file gen

这周参加一个创新培训,结束后有个答辩需要制作ppt,为了更好的展示内容,想到用词云图。本文分享一下如何基于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)


Python stylecloud制作酷炫的词云图_中文字体


2、用法

2.1、设置背景

# -*- 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',
background_color='black',
output_name='t2.png',
) # 必须加中文字体,否则格式错误




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



Python stylecloud制作酷炫的词云图_ico_02


2.2、更改调色板以自定义风格

# -*- 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='colorbrewer.diverging.Spectral_11',
output_name='t3.png',
) # 必须加中文字体,否则格式错误




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

Python stylecloud制作酷炫的词云图_ico_03

更多的配色参考 ​​https://jiffyclub.github.io/palettable/​

Python stylecloud制作酷炫的词云图_ico_04

Python stylecloud制作酷炫的词云图_中文字体_05

Python stylecloud制作酷炫的词云图_词云_06

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

​https://fontawesome.dashgame.com/​

Python stylecloud制作酷炫的词云图_ico_07

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

Python stylecloud制作酷炫的词云图_ico_08


# -*- 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)


Python stylecloud制作酷炫的词云图_ico_09


2.3、设置颜色梯度方向

垂直方向

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.TealRose_2',
icon_name='fas fa-bell',
gradient='vertical',
output_name='t5.png',
) # 必须加中文字体,否则格式错误




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

Python stylecloud制作酷炫的词云图_ico_10

水平方向

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.TealRose_2',
icon_name='fas fa-bell',
gradient='horizontal',
output_name='t6.png',
) # 必须加中文字体,否则格式错误




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

Python stylecloud制作酷炫的词云图_词云_11

3、关键字模式

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

Python
ython
thon
hon
on
n
Matlab
atlab
tlab
lab
ab
b
数学分析
学分析
分析

大数据
数据

算法

人工智能
工智能
智能

创新

创业

科技

我也不知道
也不知道
不知道
知道

代码如下

import jieba
from 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)

Python stylecloud制作酷炫的词云图_词云_12


其他的个性化需求设计各位读者可以试一下,

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

​http://www.wordart.cc/​



标签:stylecloud,__,word,name,Python,酷炫,file,gen
From: https://blog.51cto.com/domi/5851544

相关文章

  • Python面向对象---类的基本使用
    ​✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Python绘制精美可视化数据分析图表(一)-Matplotlib
    前言数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程.这一过程也是质量管理体系的支持过程.在实......
  • Python基础之注释、变量、Debug调试、数据类型
    一、注释注释的作⽤⽤⼈类熟悉的语⾔对代码进⾏解释说明,⽅便后期维护。注释分为两类:单⾏注释和多⾏注释。1、单⾏注释只能注释⼀⾏内容,语法如下:#注释内容2、多⾏注释可以......
  • 【排序算法】python 十大经典排序算法(全网最详)
    排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排......
  • python学习 爬取亚马逊网页,失败后。修改HTTP报文头部后成功!
    通过修改HTTP报文头部,来成功获取网页内容!  pythonimportrequestsr=requests.get("https://www.amazon.cn/gp/product/B01M8L5Z3Y")r.status_coder.encoding  >>>......
  • BIG T 下学期选修_python作业
    一共提交了10次作业3.1:importrandomb_Set=[]c_Set=[]i=1000while(i):b_Set.append(random.randint(0,10000))i=i-1i=1000while(i):c_Set.append(random.ran......
  • hc - python
    Grafanaalerts健康检查我们可以在Grafana的panel中设置alert当报警触发,我们有另外的程序会捕捉到它,并通过创建jira工单的方式,通报给相应的Team去处理为了能成功......
  • python课本学习-第五章
    一、列表的概念1、列表的创建列表是由一组任意类型的值组合而成的序列,组成列表的值称为元素,每个元素之间用逗号隔开。列表中的元素是可变的#列表类似于c++中的数组,数......
  • Python - request 报错:raise RemoteDisconnected("Remote end closed connection with
    2022-11-1521:46:20,261INFO[get_data.py(get_product_mode:46)]-当前page======>:255Traceback(mostrecentcalllast):File"D:\jlc_auto_test\fa_search_tes......
  • Python locust工具使用详解
    今年负责部门的人员培养工作,最近在部门内部分享和讲解了locust这个工具,今天再博客园记录下培训细节。相信你看完博客,一定可以上手locust这个性能测试框架了。一、简介1......