介绍四种绘制词云图的方法-深圳SEO优化公司

介绍四种绘制词云图的方法

公众号后台回复“图书“,了解更多号主新书内容

 作者:叶庭云,https://blog.csdn.net/fyfugoyfa

一、词云图

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

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

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

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

二、stylecloud库绘制词云

1. stylecloud简介

对自己而言,平时用 python 制作词云主要使用wordcloud,如果在可视化的过程还要用 pyecharts 绘制其他图,那么词云也干脆就用pyecharts制作了。stylecloud也是一个 python 绘制词云的包,是一位数据科学家 Max Woolf 基于 wordcloud 优化改良而成。并添加了一些更有用的功能,从而让使用者更易创作出独特并且颜值颇高的词云。

在这里插入图片描述

安装

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

stylecloud具有以下特点:

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

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

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

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

  • 提供命令行接口

2. 蒙版图片

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

自己制作的蒙版图片要么分辨率不统一,要么需要调整对比度,比较麻烦,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'即可。

3. 配色

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

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

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

4. 绘制词云

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_stylecloud
import jieba
import re
import 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    # 设置配色方案

)

运行效果如下:

三、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 jieba
import collections
import re
from wordcloud import WordCloud
import 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()

词云图:

四、pyecharts库的WordCloud绘制词云

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

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

# class pyecharts.charts.WordCloud
class WordCloud(
    # 初始化配置项,参考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)
# func pyecharts.charts.WordCloud.add
def 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 jieba
import collections
import re
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
from pyecharts import options as opts
from 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绘制的词云图渲染在网页上,具有交互效果,还有很多的配置参数可以设置让词云图看起来更美观。

◆ ◆ ◆  ◆ ◆
麟哥新书已经在京东上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前京东正在举行100-40活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:

数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:


猜你喜欢

● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗
IT农民工1 CSDN认证博客专家 CSDN认证企业博客
码龄8年 暂无认证
55
原创
-
周排名
220万+
总排名
402万+
访问
等级
1万+
积分
1505
粉丝
1710
获赞
342
评论
1万+
收藏
私信

最新评论

  • 上万条数据撕开微博热搜的真相!

    a1bs345555: 热搜,求您爬的19年热搜相关数据

  • SQL笔面试题:如何求取中位数?

    m0_72055448: 第三种完全不理解,加一减一

  • SQL笔面试题:如何求取中位数?

    m0_72055448: 方法2第二种,你原本只有一组数并没有id啊

  • SQL笔面试题:如何求取中位数?

    m0_72055448: 博主,方法2 rn1 升序 和 rn2 降序 怎么相等

  • 手把手教你Python爬取新房数据

    2401_85290692: 有电话吗

目录

为什么被折叠? 到【灌水乐园】发言
前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

相关内容推荐

.优化政府网站信阳网站快速排名优化技巧随州网站综合优化长沙做网站seo优化多少钱优化网站最新手法南宁正规网站排名优化如何优化网站dz大-将-军氵网站优化知识资讯汕头首页网站关键词优化公司呈贡区网站seo优化推广公司开封正规网站优化平台网站对于优化的影响网站优化营销的基本策略阿坝优化网站的公司淄博湖南网站优化推广html网站优化加速代码南充品牌网站建设优化网站页面制作与优化的要点张北网站优化优化公司网站选它易 速达网站优化蒋勇斌怎样做网站优化排名宝山区360网站优化排名网站优化文章怎么复制衢州柯城区厂家百度网站优化靖江市网站优化哪家好新会区网站seo优化网站优化怎样的外链能轻松收录白云优化网站建设芙蓉区网站优化中山交通设备网站seo优化郑州服务好的网站优化周口网站优化排名软件网站建设优化的书籍壹起航网站优化的任务是什么淮安市网站关键词优化优化企业网站平台安新县网站关键词优化鄠邑网站优化推广外链网站优化排名网站内容优化策略的重点有哪些周口网站优化推广渠道壹起航网站优化步骤阳江网站首页关键词优化方法西安快速优化网站小米网站搜索引擎优化报告专业的网站排名优化公司资阳网站优化哪里有怎么判断英文网站是否优化石家庄云网站优化达州网站排名优化黄岛网站优化关键词澄迈县网站优化长沙专业网站优化外包深圳如何把网站优化排名宁夏网站优化一般流程密云外贸网站优化推广滁州网站优化电话定制版网站优化选择常州营销网站优化是什么网站基础优化包括哪些惠州网站优化推广服务网站优化前期应该干什么常州营销网站优化是什么深圳企业网站优化网站网站首页优化打开速度搜索引擎营销网站外部优化顺德seo网站优化报价洛阳企业网站优化公司乐平网站优化专家泗塘新村街道网站优化阿坝做优化网站咨询网站优化团队分工安庆网站排名优化去哪找优化网站软件诊疗火17星企业网站为什么做优化马鞍山市网站优化价格上海质量网站优化软件哪里来自贡网站优化服务门户型网站怎么优化南丰关键词网站优化顶层逻辑网站优化松江网站建设优化推广济源网站优化推荐孟村网站建设优化优化网站排名参谋易速达阳江外贸网站优化网站怎么在今日头条做优化做好网站优化的要素网站怎么编辑优化文章网站seo优化教程大全汕头网站优化电池充电信阳网站优化电话优化网站建设什么公司好网站优化是属于什么职能瓮安网站优化藁城网站优化公司兰州全面的网站优化必看网站页面优化meta标签长春电商网站优化有什么技巧seo整合网站优化如何优化网站的速度江门按天网站优化什么价格无锡网站seo优化排名公司具有品牌的网站优化贾汪区网站优化哪家便宜常州市网站公告优化厂家网站优化英文叫宜宾网站优化找哪家公司两个网站一个优化一个推广诊所网站关键词软文优化江门网站优化效果如何呼和浩特市网站优化安庆企业网站排名优化马鞍网站优化福州优化网站一般需要多少钱模板网站利于优化吗洛阳网站优化平台手机优化大师官方网站律师网站优化平台南丰关键词网站优化上海网站优化推广出现问题网站优化热线电话河北质量网站优化价格对比传统行业网站优化怎么去做郑州网站优化需要注意什么教程网站推广排名优化南昌正规的网站优化seo费用扬州网站优化在哪里新余市网站排名优化如何优化企业网站标题内蒙古祥云平台网站优化网站列表页面优化方案cms网站优化哪个好用网站优化分析的方法网站 优化手机版律师 网站 优化 首页做网站优化的重要性白云网站推广优化网站优化究竟是怎么做才好南京谷歌网站优化网站推广方案优化濮阳南乐外贸网站优化威海网站优化代理东台网站排名优化工作室优化网站怎么更新文章咸阳怎么做网站优化清远市网站seo优化价格外贸公司网站优化怎么样郑州网站关键词优化价格济南网站优化公司电话网站优化推广哪家排名关键词深圳机械网站优化昆虫密码子优化网站网站优化标签怎么设置网站推广优化报价多少钱岳阳县网站seo优化排名番禺企业网站推广优化报价seo优化网站框架网站页面优化属于哪种设计浦东网站优化选哪家长葛关键词网站优化服务介绍优化公司网站推举火31星荐中小型网站优化最好的方法岳阳网站优化推广多少钱周口网站外包优化安阳关键词网站优化公司怎样做好网站建设中图片的优化呢淮北网站优化有哪些界首市seo网站优化商丘seo网站优化费用德阳网站快速优化瑞丽搜索网站排名优化七台河网站排名优化软件云浮搜索引擎网站优化服务公司网站优化注意事项株洲网站优化哪里有静安区企业网站优化哪家好奉化网站优化联系方式沁县网站seo优化排名织梦网站后台优化logo湘潭长沙网站优化公司哪家好正规的电商网站优化方法济宁智能网站优化网站优化待遇项城网站seo优化公司网站seo 代码优化坪地网站自动优化价格优化跳出率高的网站百度竞价和网站优化有什么区别交通设备网站seo优化实惠的网站优化黄山网站seo优化网站价格优化网站排名推广seo网站优化推广贴吧黔南网站优化服务网站排名优化外包多少钱任丘网站优化外包公司宝山区官网网站优化定制方案英语网站优化注意事项

合作伙伴

深圳SEO优化公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统