词云是一种非常漂亮的可视化展示方式,正所谓一图胜过千言万语,词云在之前的项目中我也有过很多的使用,可能对于我来说,一种很好的自我介绍方式就是词云吧,就像下面这样的:

个人觉还是会比枯燥的文字语言描述性的介绍会更吸引人一点吧。

今天不是说要怎么用词云来做个人介绍,而是对工作中使用到比较多的词云计较做了一下总结,主要是包括三个方面:

1、诸如上面的简单形式矩形词云

2、基于背景图片数据来构建词云数据

3、某些场景下不想使用类似上面的默认的字体颜色,这里可以自定义词云的字体颜色

接下来对上面三种类型的词云可视化方法进行demo实现与展示,具体如下,这里我们使用到的测试数据如下:

The Zen of Python, by Tim Peters            Beautiful is better than ugly.        Explicit is better than implicit.        Simple is better than complex.        Complex is better than complicated.        Flat is better than nested.        Sparse is better than dense.        Readability counts.        Special cases aren't special enough to break the rules.        Although practicality beats purity.        Errors should never pass silently.        Unless explicitly silenced.        In the face of ambiguity, refuse the temptation to guess.        There should be one-- and preferably text one --obvious way to do it.        Although that way may not be obvious at first unless you're Dutch.        Now is better than never.        Although never is often better than *right* now.        If the implementation is hard to explain, it's a bad idea.        If the implementation is easy to explain, it may be a good idea.        Namespaces are one honking great idea -- let's do more of those!

1、简单形式矩形词云实现如下:

def simpleWC1(sep=' ',back='black',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo    '''    try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    wc=WordCloud(font_path='font/simhei.ttf',#设置字体  #simhei                background_color=back, #背景颜色                max_words=1300,# 词云显示的最大词数                max_font_size=120, #字体最大值                margin=3,  #词云图边距                width=1800,  #词云图宽度                height=800,  #词云图高度                random_state=42)    wc.generate_from_frequencies(fre_dict)  #从词频字典生成词云    plt.figure()      plt.imshow(wc)    plt.axis("off")    wc.to_file(savepath)

图像数据结果如下:

2、 基于背景图像数据的词云可视化具体实现如下:

先贴一下背景图像:

这也是一个比较经典的图像数据了,下面来看具体的实现:

def simpleWC2(sep=' ',back='black',backPic='a.png',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo【使用背景图片】    '''    try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    back_coloring=imread(backPic)    wc=WordCloud(font_path='simhei.ttf',#设置字体  #simhei                background_color=back,max_words=1300,                mask=back_coloring,#设置背景图片                max_font_size=120, #字体最大值                margin=3,width=1800,height=800,random_state=42,)    wc.generate_from_frequencies(fre_dict)  #从词频字典生成词云    wc.to_file(savepath)

结果图像数据如下:

3、 自定义词云字体颜色的具体实现如下:

#自定义颜色列表color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',            '#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']

def simpleWC3(sep=' ',back='black',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo【自定义字体的颜色】    '''    #基于自定义颜色表构建colormap对象    colormap=colors.ListedColormap(color_list)      try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    wc=WordCloud(font_path='font/simhei.ttf',#设置字体  #simhei                background_color=back,  #背景颜色                max_words=1300,  #词云显示的最大词数                max_font_size=120,  #字体最大值                colormap=colormap,  #自定义构建colormap对象                margin=2,width=1800,height=800,random_state=42,                prefer_horizontal=0.5)  #无法水平放置就垂直放置    wc.generate_from_frequencies(fre_dict)    plt.figure()      plt.imshow(wc)    plt.axis("off")    wc.to_file(savepath)

结果图像数据如下:

上述三种方法就是我在具体工作中使用频度最高的三种词云可视化展示方法了,下面贴出来完整的代码实现,可以直接拿去跑的:

#!usr/bin/env python#encoding:utf-8from __future__ import division

'''__Author__:沂水寒城功能: 词云的可视化模块'''

import osimport sysimport jsonimport numpy as npfrom PIL import Imagefrom scipy.misc import imreadfrom matplotlib import colorsimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesfrom wordcloud import WordCloud,ImageColorGenerator,STOPWORDS

reload(sys)sys.setdefaultencoding('utf-8')

#自定义颜色列表color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',            '#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']

def simpleWC1(sep=' ',back='black',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo    '''    try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    wc=WordCloud(font_path='font/simhei.ttf',#设置字体  #simhei                background_color=back, #背景颜色                max_words=1300,# 词云显示的最大词数                max_font_size=120, #字体最大值                margin=3,  #词云图边距                width=1800,  #词云图宽度                height=800,  #词云图高度                random_state=42)    wc.generate_from_frequencies(fre_dict)  #从词频字典生成词云    plt.figure()      plt.imshow(wc)    plt.axis("off")    wc.to_file(savepath)

def simpleWC2(sep=' ',back='black',backPic='a.png',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo【使用背景图片】    '''    try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    back_coloring=imread(backPic)    wc=WordCloud(font_path='simhei.ttf',#设置字体  #simhei                background_color=back,max_words=1300,                mask=back_coloring,#设置背景图片                max_font_size=120, #字体最大值                margin=3,width=1800,height=800,random_state=42,)    wc.generate_from_frequencies(fre_dict)  #从词频字典生成词云    wc.to_file(savepath)

def simpleWC3(sep=' ',back='black',freDictpath='data_fre.json',savepath='res.png'):    '''    词云可视化Demo【自定义字体的颜色】    '''    #基于自定义颜色表构建colormap对象    colormap=colors.ListedColormap(color_list)      try:        with open(freDictpath) as f:            data=f.readlines()            data_list=[one.strip().split(sep) for one in data if one]        fre_dict={}        for one_list in data_list:            fre_dict[unicode(one_list[0])]=int(one_list[1])    except:        fre_dict=freDictpath    wc=WordCloud(font_path='font/simhei.ttf',#设置字体  #simhei                background_color=back,  #背景颜色                max_words=1300,  #词云显示的最大词数                max_font_size=120,  #字体最大值                colormap=colormap,  #自定义构建colormap对象                margin=2,width=1800,height=800,random_state=42,                prefer_horizontal=0.5)  #无法水平放置就垂直放置    wc.generate_from_frequencies(fre_dict)    plt.figure()      plt.imshow(wc)    plt.axis("off")    wc.to_file(savepath)

if __name__ == '__main__':    text="""        The Zen of Python, by Tim Peters        Beautiful is better than ugly.        Explicit is better than implicit.        Simple is better than complex.        Complex is better than complicated.        Flat is better than nested.        Sparse is better than dense.        Readability counts.        Special cases aren't special enough to break the rules.        Although practicality beats purity.        Errors should never pass silently.        Unless explicitly silenced.        In the face of ambiguity, refuse the temptation to guess.        There should be one-- and preferably text one --obvious way to do it.        Although that way may not be obvious at first unless you're Dutch.        Now is better than never.        Although never is often better than *right* now.        If the implementation is hard to explain, it's a bad idea.        If the implementation is easy to explain, it may be a good idea.        Namespaces are one honking great idea -- let's do more of those!        """    word_list=text.split()    fre_dict={}    for one in word_list:        if one in fre_dict:            fre_dict[one]+=1        else:            fre_dict[one]=1    simpleWC1(sep=' ',back='black',freDictpath=fre_dict,savepath='simpleWC1.png')    simpleWC2(sep=' ',back='black',backPic='backPic/A.png',freDictpath=fre_dict,savepath='simpleWC2.png')    simpleWC3(sep=' ',back='black',freDictpath=fre_dict,savepath='simpleWC3.png')

作者:沂水寒城

Blog: http://yishuihancheng.blog.csdn.net

下c语言实现wc_用 Python 实现词云可视化相关推荐

  1. 用Python做词云可视化带你分析海贼王、火影和死神三大经典动漫

    对于动漫爱好者来说,海贼王.火影.死神三大动漫神作你肯定肯定不陌生了.小编身边很多的同事仍然深爱着这些经典神作,可见"中毒"至深.今天小编利用Python大法带大家分析一下这些神作 ...

  2. Hadoop3.0基础平台搭建(三节点),以及案例运行并使用python生成词云

    一.设备配置列表,软件包 二.主机名映射 三.生成密钥 四.将密钥发送到各个节点 五.注意事项及验证 六.关闭防火墙和SeLinux安全模块(所有主机均需操作 七.解压JDK.hadoop包,设置Ja ...

  3. 使用python生成词云——聆心云心理健康服务平台数据可视分析和可视化

    实验题目:聆心云心理健康服务平台数据可视分析和可视化 实验目的和要求:统计出在聆心云平台做沙盘游戏的次数.根据各次沙盘游戏所使用的沙具和进行的操作数据进行词云可视化,掌握Python词云制作方法 实验 ...

  4. R语言对耐克NIKEID新浪微博数据K均值(K-MEANS)聚类文本挖掘和词云可视化

    全文链接:http://tecdat.cn/?p=31048 2009年8月,新浪微博(micro-blog)开始服务,随后各家微博服务在国内得到广泛传播和应用"(点击文末"阅读原 ...

  5. 词云可视化:四行Python代码轻松上手到精通

    词云可视化:四行Python代码轻松上手到精通 文章目录 词云可视化:四行Python代码轻松上手到精通 本课概要 关于本课程 `粉丝答疑交流QQ群:953712961` `微信赞赏码` 不需要写代码 ...

  6. 数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化...

    全文下载链接:http://tecdat.cn/?p=28877 作者:Yunfan Zhang Twitter是一家美国社交网络及微博客服务的网站,致力于服务公众对话.迄今为止,Twitter的日活 ...

  7. python词云改颜色_一种用Python生成词云

    一种用Python生成词云 我们在阅读一篇很长的文章时,总先看看文章的关键词来获知文章的大概内容.今天我们就来制作一个词云程序,将文章中出现次数较多的词语提取出来,生成一张词云图. 词云图的生成原理: ...

  8. python词云有什么用_使用Python定制词云

    前言: 现在用词云的个人博客或者网站越来越多了,就类如这样: 实验楼以前的一张首页部分截图 其实"词云"是对网络文本中出现频率较高的"关键词"予以视觉上的突出, ...

  9. 使用Python创建词云

    介绍 从开始从事数据可视化工作的那一天起,我就爱上它了,我总是喜欢从数据中获得有用的见解. 在此之前,我只了解基本图表,例如条形图,散点图,直方图等,这些基本图表内置在tableau中,而Power ...

最新文章

  1. the user operation is waiting for building workspace to complete解决办法
  2. 为什么C语言不会过时?
  3. em算法怎么对应原有分类_机器学习系列之EM算法
  4. Java的三种代理模式简述
  5. 转载《全国研究生考试专业课资料大全(部分资料)》
  6. Android接入支付宝支付实现
  7. php 获取一年的月份_php 根据日期获取星座
  8. 查看mysql状态常用命令
  9. Overflow属性详解(转载)
  10. 前端实现3d效果_前端动画效果实现的简单比较
  11. avalon视频学习笔记(六)
  12. 02_HBase集群部署
  13. nvm切换node版本的命令
  14. visio 2016的使用
  15. 华为OSN3500与路由器混合组网
  16. 【WordPress】视频有声音无图像
  17. cloudflare解析域名+CDN
  18. orc识别较慢_提高OCR识别效率的诀窍
  19. nginx优化配置大全
  20. rhel7 pcs pacemaker corosync配置主从高可用

热门文章

  1. 深圳观澜机房(云计算数据中心)
  2. Spring Cloud与微服务学习总结(9)——Spring Cloud面试题汇总
  3. Json学习总结(6)——Fastjson远程代码执行漏洞
  4. 人民日报谈焦虑成社会常见病:好的人生需要文火慢炖
  5. Docker学习总结(32)——Dockerfile指令详解
  6. Jquery学习总结(6)——JQuery万能代码段
  7. oracle 11g rman catalog,Oracle 11g RMAN复制数据库的测试
  8. include引用php,php使用include 和require引入文件的区别
  9. 打印中间空了一个的菱形_简单空实心图形打印|Python练习系列[3]
  10. Linux IPC POSIX 共享内存