pyecharts添加文字_超燃的文字云效果,用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/
"""from stylecloud import gen_stylecloudimport jiebaimport reimport random# 读取数据with open('datas.txt', encoding='utf-8') as f:
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 = []with open('stop_words.txt', encoding='utf-8') as f:
con = f.readlines()
stop_words = set()for i in con:
i = i.replace("\n", "") # 去掉读取每一行数据的\n
stop_words.add(i)for word in seg_list_exact:# 设置停用词并去除单个词if word not in stop_words and len(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:\Windows\Fonts\msyh.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/
"""import jiebaimport collectionsimport refrom wordcloud import WordCloudimport matplotlib.pyplot as plt# 958条评论数据with open('data.txt') as f:
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 = []with open('stop_words.txt', encoding='utf-8') as f:
con = f.readlines()
stop_words = set()for i in con:
i = i.replace("\n", "") # 去掉读取每一行数据的\n
stop_words.add(i)for word in seg_list_exact:# 设置停用词并去除单个词if word not in stop_words and len(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.WordCloudclass WordCloud(
# 初始化配置项,参考 `global_options.InitOpts`
init_opts: opts.InitOpts = opts.InitOpts()
)
# func pyecharts.charts.WordCloud.adddef add(
# 系列名称,用于 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/
"""import jiebaimport collectionsimport refrom pyecharts.charts import WordCloudfrom pyecharts.globals import SymbolTypefrom pyecharts import options as optsfrom pyecharts.globals import ThemeType, CurrentConfig
CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'# 958条评论数据with open('data.txt') as f:
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 = []with open('stop_words.txt', encoding='utf-8') as f:
con = f.readlines()
stop_words = set()for i in con:
i = i.replace("\n", "") # 去掉读取每一行数据的\n
stop_words.add(i)for word in seg_list_exact:# 设置停用词并去除单个词if word not in stop_words and len(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,Python都好练好文章,我在看❤️
pyecharts添加文字_超燃的文字云效果,用Python就能轻松get!相关推荐
- python怎么设置文字云_超燃的文字云效果,用Python就能轻松get!
原标题:超燃的文字云效果,用Python就能轻松get! 本文转载自公众号:数据森麟(ID:shujusenlin) 作者:叶庭云 链接:https://blog.csdn.net/fyfugoyfa ...
- wps流程图怎么不能添加文字_怎样使用WPS文字快速制作美观的流程图
WPS 文字快速制作美观的流程图 来源:互联网 作者:佚名 时间: 10-09 16:40:46 [大 中 小] 点评 :流程图简明易懂,在工作中应用很广,经常出现在文档中,下面我们就来探讨一下怎么样 ...
- java图片加气泡文字_图片加气泡文字
现在微信聊天少不了表情图片,这越有个性.独特的就越受大众喜爱,每每看到好看的图片时,大家也会忍不住收藏起来用.那你有没有想过自己P图呢?学一下PS图片创作一些独一无二的搞笑表情图,放在微信上秀秀吧,也 ...
- html怎么在图片上加文字_怎么把图片文字转换成word文档
我们在和别人交流的时候,有时候为了方便对方查看和理解,我们会使用文字图片进行交流,这是一种非常方便交流的形式.那如果我们想要将图片里的文字转换成Word文档应该怎么操作? 如果我们想要将图片识别为Wo ...
- 微信小程序识别图片并提取文字_分享一个 OCR 文字识别,高效图片转文字的微信小程序...
从白描 App 上线那天起,就一直有人问有没有小程序,我们一直的回答就是:不好意思,暂时没有计划.那从今天开始,就应该回答:去微信里搜索「白描取字扫描」小程序来免费使用吧! 为什么不叫「白描」?当然想 ...
- 讯飞语音转文字_录音实时转文字就是如此简单 讯飞智能录音笔SR701评测
对于职场人来讲,信息的记录和整理是件即基础又核心的能力.录音笔无疑是一个全面的及信息记录工具,同时也是被更多职场人士忽略的办公设备,因为每次记录过后,都需要逐句的将录音内容转换成文字进行整理归档,这无 ...
- cad图纸问号怎么转换文字_打开CAD图纸文字全部显示问号,这是为什么?怎么解决...
最近又多了一些询问CAD界面乱糟糟, CAD文字显示问号的小伙伴,这是为什么?怎么进行解决?造成原因是什么呢? 其实就是因为字体乱码了,造成这一情况的原因无非就是两种,字体缺失,文件版本不兼容,如何解 ...
- python是哪个人创造的文字_最早的文字是谁发明的
展开全部 仓颉发明的. 原因如下: 1.由史料记载可知,在2500多年前的春秋战国时期,仓颉造字说已经e68a8462616964757a686964616f31333366303764是当时社会的一 ...
- python调用百度语音实时转为文字_百度语音转文字 (Python)
感受好久没写中文技术文章了.说实话,学东西都是基于英文,或者 别人从英文翻译成中文 咱们再捡二手货学习.因此用中文写技术文章怎么都感受是在骗人,怎么都以为很别扭.编程 可是这一次的主角是百度.框架 虽 ...
最新文章
- ICML 2019全纪录:论文解读、workshop讨论、核心知识都在这里了
- SAP LSMW批导数据的几个注意点
- 刷题≠学好数学,近百位名校名师告诉你,数学是怎么学好的?
- composer中文阿里云镜像地址
- 无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性
- INFO:AdminStudio Debug
- 如何在vs2020编译c语言程序,如何在使用WIN10 Visual Studio 2015 编译FlightGear源码(2020.1.1版本)(示例代码)...
- c语言指针向前移动i个位置,C语言指针
- 【你们项目组有几个测试,你负责什么,迭代了几个版本,迭代周期,写了多少测试用例?】
- php字符串去掉指定字符串,php怎么去除指定字符串
- 哈希算法(哈希函数)基本
- 操作系统第2章作业题答案
- 2022年中南大学计算机考研复试内容是什么
- html中斜体样式怎么写,html i 斜体标签
- 【云栖大会】马云口中创造未来的年轻人,把数据+环保玩出了新花样
- 学习-Java字符串之String类常用方法之字符串长度
- 身份证号码有效性验证
- 如何将flash源文件在flash MX里整体缩放或移动!
- android录音波浪动画_Android自定义View实现波浪动画
- UG后处理—进给速度R模式输出研究
热门文章
- 的优缺点_浅谈桉木家具的优缺点
- php strchr 截断,PHP strchr() 函数
- Java 答疑:JDK 11(Java 11)之后没有 JRE 目录,环境用户变量配置的解决方法
- 普通用户无法执行java,CentOS tomcat普通用户执行配置安装
- 蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...
- g标签 怎么设置svg_SVG g元素
- python爬电影_使用Python多线程爬虫爬取电影天堂资源
- 百度云盘云知梦php_教你搭建私有云盘,简单快速,完全傻瓜式!不限速,永久有效!...
- oracle的exp和imp,oracle exp和imp
- LDAP----manage-account