原标题:超燃的文字云效果,用Python就能轻松get!

本文转载自公众号:数据森麟(ID:shujusenlin)

作者:叶庭云

链接:https://blog.csdn.net/fyfugoyfa

/ 01 / 词云图

词云图是一种用来展现高频关键词的可视化表达,通过文字、色彩、图形的搭配,产生有冲击力地视觉效果,而且能够传达有价值的信息。

词云就是通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出。

词云图过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。

本文通过对已获取的京东商品评论数据进行预处理、文本分词、词频统计、词云展示,熟悉制作词云的基本方法。

/ 02 / stylecloud库绘制词云

01 stylecloud简介

对自己而言,平时用 python 制作词云主要使用wordcloud,如果在可视化的过程还要用 pyecharts 绘制其他图,那么词云也干脆就用pyecharts制作了。

stylecloud也是一个 python 绘制词云的包,是一位数据科学家 Max Woolf 基于 wordcloud 优化改良而成。

并添加了一些更有用的功能,从而让使用者更易创作出独特并且颜值颇高的词云。

安装 stylecloud库。

pip install stylecloud -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

stylecloud具有以下特点:

为词云提供(任意大小)的图标形状(通过 Font Awesome 5.11.2 获得)

支持高级调色板(通过 palettable 实现)

为上述调色板提供直接梯度

支持读取文本文件,或预生成的 CSV 文件(包含单词和数字)

提供命令行接口

02 蒙版图片

影响词云颜值的问题之一就是蒙版图片的生成。

自己制作的蒙版图片要么分辨率不统一,要么需要调整对比度,比较麻烦,stylecloud是直接使用 Font Awesome 这个现成的方案。

网址链接:https://fontawesome.com/license/free

在stylecloud static的文件夹下,有一个 fontawesome.min 的 css 文件包含了大量的图标,打开查看里面的内容,发现其中包含很多图标的代码。

这种 css 层叠样式表,咱也看不懂、也不知道咋用呀,多亏有中文网站分门别类罗列了图标的样子和名字。

https://fa5.dashgame.com/#/%E5%9B%BE%E6%A0%87里面有详细的图标介绍和分类。

使用方法如下:

比如要使用苹果商标的蒙版图片,样式前缀 fab,以 fa-为前缀的名称 fa-apple,设置icon_name参数,icon_name='fab fa-apple'即可。

03 配色

配色是影响词云颜值的又一大问题。stylecloud同样找到了比较好的方案,配色方案使用高级调色板 palettable 来实现。

palettable 网站: https://jiffyclub.github.io/palettable/

我们可以通过修改参数 palette='配色方案' 来达到更改自己的词云配色。

04 绘制词云

gen_stylecloud 主要参数如下:

text:输入文本,最好在直接调用函数时使用。

file_path:输入文本/CSV 的文件路径

icon_name:stylecloud 形状的图标名称(如 fas fa-grin-beam),[default: fas fa-flag]

palette:控制调色方案,stylecloud的调色方案调用了palettable,这是一个非常实用的模块,其内部收集了数量惊人的大量的经典调色方案,默认为 cartocolors.qualitative.Bold_5

output_name:stylecloud 的输出文本名。[default: stylecloud.png]

gradient:梯度方向,(其默认值是 None,如果它的值不是 None,则 stylecloud 使用了方向性梯度)[default: None]

size:控制输出图像文件的分辨率(因为stylecloud默认输出方形图片,所以size传入的单个整数代表长和宽),默认为 512

font_path:stylecloud 所用字体 .ttf 文件的路径。[default: uses included Staatliches font]

random_state:控制单词和颜色的随机状态

background_color:字符串,控制词云图底色,可传入颜色名称或 16进制色彩,默认为 white

max_font_size:stylecloud 中的最大字号 [default: 200]

max_words:stylecloud 可包含的最大单词数 [default: 2000]

stopwords:bool型,控制是否开启去停用词功能,默认为 True,调用自带的英文停用词表

custom_stopwords:传入自定义的停用词List,配合stopwords共同使用

代码如下。

# -*- coding: UTF-8 -*-

"""

@Author :叶庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

fromstylecloud importgen_stylecloud

importjieba

importre

importrandom

# 读取数据

withopen( 'datas.txt', encoding= 'utf-8') asf:

data = f.read

# 文本预处理 去除一些无用的字符 只提取出中文出来

new_data = re.findall( '[u4e00-u9fa5]+', data, re.S)

new_data = "/".join(new_data)

# 文本分词

seg_list_exact = jieba.cut(new_data, cut_all= True)

result_list = []

withopen( 'stop_words.txt', encoding= 'utf-8') asf:

con = f.readlines

stop_words = set

fori incon:

i = i.replace( "n", "") # 去掉读取每一行数据的n

stop_words.add(i)

forword inseg_list_exact:

# 设置停用词并去除单个词

ifword notinstop_words andlen(word) > 1:

result_list.append(word)

print(result_list)

# 个人推荐使用的palette配色方案 效果挺好看

# colorbrewer.qualitative.Dark2_7

# cartocolors.qualitative.Bold_5

# colorbrewer.qualitative.Set1_8

gen_stylecloud(

text= ' '.join(result_list), # 文本数据

size= 600, # 词云图大小

font_path= r'‪C:WindowsFontsmsyh.ttc', # 中文词云 显示需要设置字体

output_name= '词云.png', # 输出词云图名称

icon_name= 'fas fa-grin-beam', # 图标

palette=cartocolors.qualitative.Bold_5 # 设置配色方案

)

运行效果如下:

/ 03 / wordcloud库绘制词云

wordcloud是优秀的词云展示第三方库 可以在命令行通过pip安装。

pip install wordcloud -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

wordcloud库把词云当作一个WordCloud对象。

wordcloud.WordCloud( ) 代表一个文本对应的词云

可以根据文本中词语出现的频率等参数绘制词云

绘制词云的形状,尺寸和颜色都可以设定

配置对象参数。

代码实现:

# -*- coding: UTF-8 -*-

"""

@Author :叶庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

importjieba

importcollections

importre

fromwordcloud importWordCloud

importmatplotlib.pyplot asplt

# 958条评论数据

withopen( 'data.txt') asf:

data = f.read

# 文本预处理 去除一些无用的字符 只提取出中文出来

new_data = re.findall( '[u4e00-u9fa5]+', data, re.S)

new_data = " ".join(new_data)

# 文本分词

seg_list_exact = jieba.cut(new_data, cut_all= True)

result_list = []

withopen( 'stop_words.txt', encoding= 'utf-8') asf:

con = f.readlines

stop_words = set

fori incon:

i = i.replace( "n", "") # 去掉读取每一行数据的n

stop_words.add(i)

forword inseg_list_exact:

# 设置停用词并去除单个词

ifword notinstop_words andlen(word) > 1:

result_list.append(word)

print(result_list)

# 筛选后统计

word_counts = collections.Counter(result_list)

# 获取前100最高频的词

word_counts_top100 = word_counts.most_common( 100)

print(word_counts_top100)

# 绘制词云

my_cloud = WordCloud(

background_color= 'white', # 设置背景颜色 默认是black

width= 900, height= 600,

max_words= 100, # 词云显示的最大词语数量

font_path= 'simhei.ttf', # 设置字体 显示中文

max_font_size= 99, # 设置字体最大值

min_font_size= 16, # 设置子图最小值

random_state= 50# 设置随机生成状态,即多少种配色方案

).generate_from_frequencies(word_counts)

# 显示生成的词云图片

plt.imshow(my_cloud, interpolation= 'bilinear')

# 显示设置词云图中无坐标轴

plt.axis( 'off')

plt.show

词云图:

/ 04 / pyecharts库的WordCloud绘制词云

pyecharts是基于echarts的python库,能够绘制多种交互式图表,和其他可视化库不一样,pyecharts支持链式调用。

也就是说添加图表元素、修改图表配置,只需要简单的调用组件即可。

# class pyecharts.charts.WordCloud

classWordCloud(

# 初始化配置项,参考 `global_options.InitOpts`

init_opts: opts.InitOpts = opts.InitOpts

)

# func pyecharts.charts.WordCloud.add

defadd(

# 系列名称,用于 tooltip 的显示,legend 的图例筛选。

series_name: str,

# 系列数据项,[ (word1, count1), (word2, count2)]

data_pair: Sequence,

# 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star'可选

shape: str = "circle",

# 自定义的图片(目前支持 jpg, jpeg, png, ico 的格式,其他的图片格式待测试)

# 该参数支持:

# 1、 base64 (需要补充 data 头);

# 2、本地文件路径(相对或者绝对路径都可以)

# 注:如果使用了 mask_image 之后第一次渲染会出现空白的情况,再刷新一次就可以了(Echarts 的问题)

# Echarts Issue: https://github.com/ecomfe/echarts-wordcloud/issues/ 74

mask_image: types.Optional[str] = None,

# 单词间隔

word_gap: Numeric = 20,

# 单词字体大小范围

word_size_range=None,

# 旋转单词角度

rotate_step: Numeric = 45,

# 距离左侧的距离

pos_left: types.Optional[str] = None,

# 距离顶部的距离

pos_top: types.Optional[str] = None,

# 距离右侧的距离

pos_right: types.Optional[str] = None,

# 距离底部的距离

pos_bottom: types.Optional[str] = None,

# 词云图的宽度

width: types.Optional[str] = None,

# 词云图的高度

height: types.Optional[str] = None,

# 允许词云图的数据展示在画布范围之外

is_draw_out_of_bound: bool = False,

# 提示框组件配置项,参考 `series_options.TooltipOpts`

tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

# 词云图文字的配置

textstyle_opts: types.TextStyle = None,

# 词云图文字阴影的范围

emphasis_shadow_blur: types.Optional[types.Numeric] = None,

# 词云图文字阴影的颜色

emphasis_shadow_color: types.Optional[str] = None,

)

代码实现:

# -*- coding: UTF-8 -*-

"""

@Author :叶庭云

@CSDN :https://yetingyun.blog.csdn.net/

"""

importjieba

importcollections

importre

frompyecharts.charts importWordCloud

frompyecharts.globals importSymbolType

frompyecharts importoptions asopts

frompyecharts.globals importThemeType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# 958条评论数据

withopen( 'data.txt') asf:

data = f.read

# 文本预处理 去除一些无用的字符 只提取出中文出来

new_data = re.findall( '[u4e00-u9fa5]+', data, re.S) # 只要字符串中的中文

new_data = " ".join(new_data)

# 文本分词--精确模式分词

seg_list_exact = jieba.cut(new_data, cut_all= True)

result_list = []

withopen( 'stop_words.txt', encoding= 'utf-8') asf:

con = f.readlines

stop_words = set

fori incon:

i = i.replace( "n", "") # 去掉读取每一行数据的n

stop_words.add(i)

forword inseg_list_exact:

# 设置停用词并去除单个词

ifword notinstop_words andlen(word) > 1:

result_list.append(word)

print(result_list)

# 筛选后统计

word_counts = collections.Counter(result_list)

# 获取前100最高频的词

word_counts_top100 = word_counts.most_common( 100)

# 可以打印出来看看统计的词频

print(word_counts_top100)

word1 = WordCloud(init_opts=opts.InitOpts(width= '1350px', height= '750px', theme=ThemeType.MACARONS))

word1.add( '词频', data_pair=word_counts_top100,

word_size_range=[ 15, 108], textstyle_opts=opts.TextStyleOpts(font_family= 'cursive'),

shape=SymbolType.DIAMOND)

word1.set_global_opts(title_opts=opts.TitleOpts( '商品评论词云图'),

toolbox_opts=opts.ToolboxOpts(is_show= True, orient= 'vertical'),

tooltip_opts=opts.TooltipOpts(is_show= True, background_color= 'red', border_color= 'yellow'))

word1.render( "商品评论词云图.html")

词云图:

用pyecharts绘制的词云图渲染在网页上,具有交互效果,还有很多的配置参数可以设置让词云图看起来更美观。

万水千山总是情,点个

python怎么设置文字云_超燃的文字云效果,用Python就能轻松get!相关推荐

  1. pyecharts添加文字_超燃的文字云效果,用Python就能轻松get!

    本文转载自公众号:数据森麟(ID:shujusenlin) 作者:叶庭云 链接:https://blog.csdn.net/fyfugoyfa / 01 / 词云图 词云图是一种用来展现高频关键词的可 ...

  2. python如何设置字体大小_[Python Basic]如何设置 Python 的运行环境

    一如既往地, 咱们不仅仅是学习 Python 的基础知识, 同时, 也按照2/8 规律学习关键知识的关键部分 - python 核心词汇 如何安装 Python 下载 Python 打开网址:http ...

  3. python函数设置默认参数_深入讲解Python函数中参数的使用及默认参数的陷阱

    这篇文章主要介绍了Python函数中参数的使用及默认参数的陷阱,文中将函数的参数分为必选参数.默认参数.可变参数和关键字参数来讲,要的朋友可以参考下 C++里函数可以设置缺省参数,Java不可以,只能 ...

  4. python程序不出结果_超详细的Python入门教程,1小时就可以学会

    为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是 ...

  5. python国内源很慢_软件下载太慢,为linux,R,python,conda配置国内源,让你快速下载安装大量国外软件...

    image 在国内很多情况下下载国外开发的软件或者国外托管的相关的代码库,依赖和软件包是最耗时最浪费精力的事情.好在国内有不少提供软件镜像的网站,使用国内的镜像源下载软件速度会非常快,能节省很多时间. ...

  6. python 读取鼠标选中文本_木辛老师的编程课堂:Python和Qt之页面布局实战篇(一)...

    通过前几节课的学习,我们已经基本上掌握了使用Qt Designer完成简单的布局管理.通过这些知识的学习,我们算是对PyQt进行了初步的了解,也算是入门了! 但是仅仅掌握这些知识还是远远不够的: 高深 ...

  7. python module是干什么的_如何最简单、通俗地理解Python的模块?

    目录: 一.笔记 二.笔记目录 一.笔记 1) 模块 ① Python模块(Module),是一个Python文件,以.py结尾,包含了Python语句和Python对象定义,模块让你能够有逻辑地组织 ...

  8. python海龟编辑器画小汽车_【海龟编辑器下载】海龟编辑器(Python编辑器) v1.3.4 官方免费版-趣致软件园...

    海龟编辑器是一款专为广大少儿打造的Python编辑器,该软件功能强大且使用便利,可以帮助孩子们以搭积木的方式来学习Python,并且支持Python代码和图形化积木的双向互相转译,不但可以有效提升孩子 ...

  9. python英文文本情感分析_舆情信息浩如烟海?看看如何用Python进行英文文本的情感分析...

    市场每天都在生成海量的舆情信息,这些信息可以帮助我们识别市场情绪的转变.如果只是人工地去跟踪大量的舆论和研报显然缺乏效率.我们可以试试让机器来完成这个工作. 数据科学在数值领域中很常见,但这个不断壮大 ...

最新文章

  1. WC前的颓废——带花树
  2. html中看到php代码_如何在HTML中嵌入PHP代码
  3. 每日一皮:这真的是亲爹吗...
  4. python爬虫下载-用Python爬虫下载整本小说
  5. 3.Utm详细实现-用户生命流程
  6. why our extension project didn't load S3 view and controller
  7. SQLServer知识:sqlcmd用法笔记
  8. leetcode896. 单调数列
  9. thymeleaf There was an unexpected error (type=Internal Server Error, status=500).
  10. php 下载的官方扩展 没有configure文件解决办法
  11. 比赛-6月Round1
  12. keil 5 注册机使用及报错解决办法
  13. 网站ICP备案和公安备案流程
  14. 简单的新闻分类算法(流程图描述)
  15. 两种双绞线的线序568A与568B
  16. IOS -- 获取用户的健康数据的运动步数
  17. 如何解决wup.exe文件占用cpu资源
  18. python ctm 关联主题模型_面向特定划分的主题模型的设计与实现
  19. 前端学习记录(十一) 一个“屡教不改”的错误
  20. 2023牛客寒假算法基础集训营1

热门文章

  1. 嵌入式软件工程师--投资
  2. win7支持的Node版本-node-v12.8.0-x64.msi
  3. 营销场景化,让你的产品更吸引人
  4. servlet mysql批量删除_jsp+servlet+mysql-----------批量删除
  5. HIVE- SCD缓慢变化
  6. 《当代返乡打工人图鉴》
  7. SpringBoot 定时器设置
  8. 妹子ui日期控件Uncaught TypeError: $(...).datepicker is not a function
  9. 安装ohmyzsh报错:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
  10. Vert.x 学习笔记