利用stylecloud制作更酷炫的词云图

补充:stylecloud绘制词云图详解

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

  1. 可以使用 Font Awesome 提供的免费图标更改词云的形状;
  2. 通过 palettable 更改调色板以自定义风格,更改背景颜色;
  3. 添加梯度使颜色按照特定方向流动。

安装

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

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 中有下面的一段话

暮色西去,留下了淡淡的忧伤。半帘落霞里,醉晕星辰、月隐山巅。一柳落背的残影孤独着滑进了山弯,悄悄的沉眠。烟尘朦胧中,岁月匆匆流逝,追逐着一轮远远的梦想。半盏残垣、两堵城池,萤火中幽香夜色。

剪一段经年,写一篇过往,流年里风月缠绵、轻浅如禅。心阅一卷时光,悠然里安静赏花、无语草香。红尘幽幽,行走在尘世的的路上,花间写诗,月下饮酒。一盏琉璃的浮华,云淡风轻中失落。一半的静谧、一半的安祥,遗留着许多错过的情爱、伤过的心灵。生命中太多的笔墨,纸砚一池安然。一扇时光中,悠香着一缕淡淡的芬芳,相伴着一份柔柔的恬淡。一本书写满了人生、一段情温暖了爱恋、一首诗记忆了曾经、一杯茶起落了缘份。握着最美的遇见,写下珍惜。携着最暖的心语,写意温馨。

烟雨下的春绿,伏笔了盛夏的明朗。海棠落月的幽静,缠绵着银色的月光,星光执笔的萧瑟和鸣里,轻笛梵音。花月中秦时幛幔垂垂,风尘里汉疆硝烟漫漫。

岁月咫尺、天涯相望。尘世匆匆,遥遥万里。留一片春风,栽一山桃源,幽静的心灵里,刻下了多少人的风花雪月、悲欢离合。恍恍惚惚的秋梦里,又有多少人发出了长长的的叹息。年年过四季,岁岁是轮回。

人生自己温一壶茶,烫也罢,凉也罢,苦也可,甜也可,自己慢慢品慢慢尝。

回想一世,不记得了誓言,也忘记了当初的承诺。什么时候两鬓斑白、皱纹沟壑,什么时候去过桃源,什么时候带雨梨花,都成了过往一笺无字的纸。

指尖拨动着岁月的年轮,把曾经都碾成了粉末。洒在大海里、洒在山谷中、种在大树下、种在田园里。明年又会长出春绿、长出秋黄、长出冬雪。再执笔展开红尘,一首岁月一首诗,一韵平仄一片情。

烟雨尘世,岁月匆匆……

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

 # -*- 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 = 'C:/word.txt'
    cloud(file_name)

在这里插入图片描述

设置背景

# -*- 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 = 'C:/word.txt'
    cloud(file_name)

在这里插入图片描述

更改调色板以自定义风格

# -*- 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',
                       #palette='cartocolors.diverging.ArmyRose_3',
                       palette='colorbrewer.diverging.Spectral_11',
                       output_name='t3.png',
                       ) #必须加中文字体,否则格式错误
        
if __name__ == "__main__":
    file_name = 'C:/word.txt'
    cloud(file_name)

在这里插入图片描述
关于更多的配色,可以参考 https://jiffyclub.github.io/palettable/

gen_stylecloud(text=result,
               font_path='C:\\Windows\\Fonts\\simhei.ttf',
               background_color= 'black',
               #palette='cartocolors.diverging.ArmyRose_3',
                palette=random.choice(choices) ,           # 随机选取配色方案
               output_name='t3.png',
               ) #必须加中文字体,否则格式错误

在这里插入图片描述
在这里插入图片描述
配色有许多种
在这里插入图片描述在这里插入图片描述

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

https://fontawesome.dashgame.com/

在这里插入图片描述
这里随便找一个图标
在这里插入图片描述

或者
https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87

https://fontawesome.com/icons?d=gallery
在这里插入图片描述

在这里插入图片描述

设置icon_name参数,格式

icon_name='fab fa-apple’
icon_name=‘fas fa-plane’
icon_name=‘fas fa-bell’
icon_name=‘fas fa-envira’

# -*- 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',
                       palette='cartocolors.diverging.Fall_4',
                       icon_name='fas fa-plane',
                       output_name='t4.png',
                       ) #必须加中文字体,否则格式错误
        
if __name__ == "__main__":
    file_name = 'C:/word.txt'
    cloud(file_name)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

设置梯度方向

垂直

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',
                       palette='cartocolors.diverging.TealRose_2',
                       icon_name='fas fa-bell',
                       gradient='vertical' ,
                       output_name='t6.png',
                       ) #必须加中文字体,否则格式错误
        
if __name__ == "__main__":
    file_name = 'C:/word.txt'
    cloud(file_name)
    

在这里插入图片描述
水平

# -*- 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',
                       palette='cartocolors.diverging.TealRose_2',
                       icon_name='fas fa-bell',
                       gradient='horizontal' ,
                       output_name='t6.png',
                       ) #必须加中文字体,否则格式错误
        
if __name__ == "__main__":
    file_name = 'C:/word.txt'
    cloud(file_name)

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值