专栏首页机器之心更改形状和背景色、自定义风格、颜色流动…这款词云工具都能做到

更改形状和背景色、自定义风格、颜色流动…这款词云工具都能做到

选自Github 作者:Max Woolf

机器之心编译

参与:魔王、杜伟

这款工具可以帮助生成风格多样的词云,包括梯度和图标形状!

stylecloud 是一个 Python 包,它基于流行的 word_cloud 包,并添加了一些有用的功能,从而创建出独特的词云。stylecloud 具备以下特点:

  • 为词云提供(任意大小)的图标形状(通过 Font Awesome 5.11.2 获得);
  • 支持高级调色板(通过 palettable 实现);
  • 为上述调色板提供直接梯度;
  • 支持读取文本文件,或预生成的 CSV 文件(包含单词和数字);
  • 提供命令行接口。

stylecloud 包由数据科学家 Max Woolf 创建,是对其 2016 年风格化词云项目的较正式实现。

stylecloud 项目地址:https://github.com/minimaxir/stylecloud

安装

你可以通过 pip 安装 stylecloud:

pip3 install stylecloud

使用

你可以通过 Python 脚本使用 stylecloud,也可以直接使用独立的 CLI app。假如你有一份美国宪法的文本文件 constitution.txt。

使用以下 Python 脚本:

import stylecloud
stylecloud.gen_stylecloud(file_path='constitution.txt')

得到如下词云:

但你可以做到更多!比如使用 Font Awesome 提供的免费图标更改词云的形状,通过 palettable 更改调色板以自定义风格,更改背景颜色,以及最重要的,添加梯度使颜色按照特定方向流动。

import stylecloud

stylecloud.gen_stylecloud(file_path='constitution.txt',
                          icon_name='fas fa-dog',
                          palette='colorbrewer.diverging.Spectral_11',
                          background_color='black',
                          gradient='horizontal')

你还可以使用 CLI 执行更快速的 stylecloud 生成!对于上文中的旗形 stylecloud,使用:

stylecloud --file_path constitution.txt

对于更复杂的犬形 stylecloud,使用:

stylecloud --file_path constitution.txt --icon_name 'fas fa-dog' --palette colorbrewer.diverging.Spectral_11 --background_color black --gradient horizontal

你可以在 stylecloud-examples repo 中查看 stylecloud 的更多示例,比如如何基于 Twitter 和 Reddit 数据制作 stylecloud。

地址:https://github.com/minimaxir/stylecloud-examples

有用的参数

以下参数对 stylecloud Python 函数和 CLI 均有效,你可以通过 stylecloud -h 获取这些参数的信息。

  • text:输入文本。最好在直接调用函数时使用。
  • file_path:输入文本/CSV 的文件路径。最好在 CLI 上使用。
  • gradient:梯度方向。(其默认值是 None,如果它的值不是 None,则 stylecloud 使用了方向性梯度。)[default: None]
  • size:stylecloud 的大小(长度和宽度)。[default: 512]
  • icon_name:stylecloud 形状的图标名称(如 fas fa-grin)。[default: fas fa-flag]
  • palette:调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6]
  • background_color:背景颜色。[default: white]
  • max_font_size:stylecloud 中的最大字号。[default: 200]
  • max_words:stylecloud 可包含的最大单词数。[default: 2000]
  • stopwords:布尔值,用于筛除常见禁用词。[default: True]
  • output_name:stylecloud 的输出文本名。[default: stylecloud.png]
  • font_path:stylecloud 所用字体 .ttf 文件的路径。[default: uses included Staatliches font]
  • random_state:控制单词和颜色的随机状态。

小贴士

stylecloud 的主要目标是为文本数据可视化结果提供独特的美感。词云强调统计上可靠的数据可视化,而 stylecloud 更注重「酷」!

stylecloud 包独立于 word_cloud 单独发布,因为它的适用范围和 Python 依赖项均有所增长。

生成优秀 stylecloud 需要的完美字体是:加粗/高字重,以提高可读性;紧凑/低间距,以容纳更多文本。这两个特点就是 stylecloud 使用 Staatliches 作为默认字体的原因(而不是 base word_cloud 使用的 Droid Sans 字体)。

  • 在生成 stylecloud 后,你可能想做一些后处理:例如添加颜色掩码,添加感知偏移,将 stylecloud 输入风格迁移 AI 模型等等。
  • max_font_size 的默认值 200 与 size 的默认值 512 呈正相关,如要增加 size,你还需要考虑增加 max_font_size 的值。
  • 由于 stylecloud 内置 Font Awesome 字体文件的大小,它们不会在 Font Awesome 每次小型新发布时进行更新。
  • 推荐使用大且重的 Font Awesome 图标,轻图标可能会过度约束文本。
  • 如果使用默认随机颜色采样(random-color-sampling)方法,推荐使用 qualitative 调色板。反之,如果使用颜色梯度,推荐使用非 qualitative 调色板(如 sequential 调色板)。

展望

stylecloud 的开发者表示未来将提供以下新功能:

  • 支持自定义字体文件(如 Font Awesome Pro);
  • 创建一个运行 stylecloud 的 app。

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 教程 | 如何用百度深度学习框架PaddlePaddle做数据预处理

    机器之心
  • 16岁高中生夺冠Kaggle地标检索挑战赛!而且竟然是个Kaggle老兵

    机器之心
  • 异常检测怎么做,试试孤立随机森林算法(附代码)

    从银行欺诈到预防性的机器维护,异常检测是机器学习中非常有效且普遍的应用。在该任务中,孤立森林算法是简单而有效的选择。

    机器之心
  • 数据备份用DG还是RMAN?

    在最近的一个大型项目中,用户提到由我们云提供商进行Oracle数据库的备份、迁移集成工作,是选择用DG、还是RMAN?我们今天来分析一下。

    希望的田野
  • 基于RHEL8/CentOS8的nmcli常见命令使用

    小慢哥Linux运维
  • 【自然框架】注册会员活动——第一份代码的修改建议(第一版)

      感谢“好坏”提供代码,这是我看过的比较不错的三层结构的代码了,业务层并不是直接调用DAL,而是有其自身的逻辑判断,并不是传声筒,很赞。 我对这份代码,按照自...

    用户1174620
  • 领通科技推出彩虹SDK:让天下没有难解决的问题

    随着智能硬件、智能家居、车联网等新兴领域的崛起,越来越多的智能化设备来到了我们的身边,而更加复杂的安装操作令本来就对高科技产品不太感冒的普通用户犯了难,领通科技...

    BestSDK
  • 信息安全度量:什么是云要收集的

    CISO需要知道云安全性能的真实数据。因为C级别的高管和董事会会一直问安全管理者风险暴露相关的问题——“我们需要多高级别的安全?我们距离满足合规要求还有多少距离...

    静一
  • Domo 还是 Tableau,如何选择正确的商业智能解决方案?

    编者注: 随着行业对营销和推广效果的重视,数据的作用越来越大。而营销渠道的多样化,也导致数据来源的数量和数据本身的体量都越来越大。如何挖掘,分析和展现各种数据就...

    iCDO互联网数据官
  • 每日算法系列【LeetCode 495】提莫攻击

    在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。

    godweiyang

扫码关注云+社区

领取腾讯云代金券