python做词云 (WordCloud)

python做词云 (WordCloud)

1. 安装

 某个教程给出的方法,到[这里][1]下载相应的wordcolud,然后到相应目录pip安装。
 其实直接
						pip install wordcloud

就ok了 ,进入python。 import wordcloud成功即可。

##2. 文档简要说明

可以看到文档主要就3个主要的函数,目前主要介绍WordCloud模块以及相关的函数。

  1. WordCloud()
class wordcloud.WordCloud(font_path=None, width=400, height=200, margin=2, ranks_only=None, prefer_horizontal=0.9, mask=None, scale=1, color_func=None, max_words=200, min_font_size=4, stopwords=None, random_state=None, background_color=‘black‘, max_font_size=None, font_step=1, mode=‘RGB‘, relative_scaling=0.5, regexp=None, collocations=True, colormap=None, normalize_plurals=True)

font_path:字体位置,中文的时候需要制定一些。

prefer_horizontal:float,水平方向的拟合次数,如果小于1,一旦水平方向不合适就旋转这个词。 意思就是词云的算法水平词和竖直方向词的一种数量衡量。

mask :控制词云的背景。nd-array or None (default=None)如果是空,就使用width和height参数。不然使用mask作为背景。

scale:缩放图片

max_words:显示的最大词

stopwords:停用词

relative_scaling:这个比较有意思,如果true,字体的大小与词语顺序有关。false,字体大小与词云频率有关。

  1. 相关函数

fit_words(frequencies) 根据单词与频率生成词云

generate(tex) 根据文本直接生成词云,仅限 英文的

generate_from_frequencies(frequencies, max_font_size=None) 根据单词与频率生成词云,可以指定最大数目

generate_from_text()根据文本直接生成词云。英文的

process_text(text) 根据text生成单词的统计数目,返回{word,int},去除了停用词。只限于英文的

关于fit_words的参数问题,

让我们传的是一个tuple,包含了word和frequency,实际我这么做的时候参数是错误了,看一下源代码

 def fit_words(self, frequencies):
        """Create a word_cloud from words and frequencies.

        Alias to generate_from_frequencies.

        Parameters
        ----------
        frequencies : array of tuples
            A tuple contains the word and its frequency.

        Returns
        -------
        self
        """
        return self.generate_from_frequencies(frequencies)

参数说明仍然说是用“ A tuple contains the word and its frequency.”,又去调用了self.generate_from_frequencies(frequencies),

 def generate_from_frequencies(self, frequencies, max_font_size=None):
        """Create a word_cloud from words and frequencies.

        Parameters
        ----------
        frequencies : dict from string to float
            A contains words and associated frequency.

        max_font_size : int
            Use this font-size instead of self.max_font_size

        Returns
        -------
        self

        """
        # make sure frequencies are sorted and normalized
        frequencies = sorted(frequencies.items(), key=item1, reverse=True)
        frequencies = frequencies[:self.max_words]
        # largest entry will be 1
        max_frequency = float(frequencies[0][4])

        frequencies = [(word, freq / max_frequency)
                       for word, freq in frequencies]

这个时候的参数成了"dict from string to float",而且里面那个列表生成式 相当于生成了一个新的 frequencies ,这个新的 frequencies 是个array of tuple。所以我们还是要传字典形式的。只不过函数内部变成了 array of tuple 。。。。。年久未修?

3. 知乎教育水平 生成词云实例

#coding=utf-8

#导入wordcloud模块和matplotlib模块
from wordcloud import WordCloud,ImageColorGenerator
import  matplotlib.pyplot as plt
from scipy.misc import imread
import jieba
import jieba.analyse

content = (",").join(data2[‘教育经历‘].values.tolist())#dataframe格式数据
tags = jieba.analyse.extract_tags(content, topK=200, withWeight=False)

text =" ".join(tags)
print(tags)

#读入背景图片
bj_pic=imread(‘1.png‘)

#生成词云(通常字体路径均设置在C:\\Windows\\Fonts\\也可自行下载)
font=r‘C:\\Windows\\Fonts\\STFANGSO.ttf‘#不加这一句显示口字形乱码  ""报错
wordcloud=WordCloud(mask=bj_pic,background_color=‘white‘,font_path=font,scale=0.5).generate_from_text(text)  #直接根据文本生成 词云

plt.imshow(wordcloud)
plt.axis(‘off‘)
plt.show()

wordcloud.to_file(‘test2.jpg‘)

可以试着停用词,university,或者直接在tags里把不想要的删除。图片很小,用了scale=0.5

尝试了一下fit_words,必须传入字典形式的。!!!

wordcloud = WordCloud(mask=bj_pic,background_color=‘white‘,font_path=font,scale=3.5).fit_words({"sb":3,"我是":4,"操":10})

plt.imshow(wordcloud)
plt.axis(‘off‘)
plt.show()

原文地址:https://www.cnblogs.com/cbfstudy/p/9092112.html

时间: 2024-08-14 00:08:58

python做词云 (WordCloud)的相关文章

如何用Python做词云(收藏)

看过之后你有什么感觉?想不想自己做一张出来? 如果你的答案是肯定的,我们就不要拖延了,今天就来一步步从零开始做个词云分析图.当然,做为基础的词云图,肯定比不上刚才那两张信息图酷炫.不过不要紧,好的开始是成功的一半嘛.食髓知味,后面你就可以自己升级技能,进入你开挂的成功之路. 网上教你做信息图的教程很多.许多都是利用了专用工具.这些工具好是好,便捷而强大.只是它们功能都太过专一,适用范围有限.今天我们要尝试的,是用通用的编程语言Python来做词云. Python是一种时下很流行的编程语言.你不仅

Python - 利用词云wordcloud,jieba和中国地图制作四大名著的热词图

热词图很酷炫,也非常适合热点事件,抓住重点,以图文结合的方式表现出来,很有冲击力.下面这段代码是制作热词图的,用到了以下技术: jieba,把文本分词 wordcloud,制作热图 chardet,辨别文件的编码格式,其中中文统一为GB18030,更加的兼容 imageio,提取图片的形状 其他:自动识别文件编码,自动识别txt文件,图片文件名与txt文件一致,使用的是四大名著的文本(自行百度),部分中国地图 上代码: import os import jieba import wordclou

Python给小说做词云

闲暇时间喜欢看小说,就想着给小说做词云,展示小说的主要内容.开发语言是Python,主要用到的库有wordcloud.jieba.scipy.代码很简单,首先用jieba.cut()函数做分词,生成以空格分割的字符串,然后新建WordCloud类,保存为图片. 1 #coding:utf-8 2 import sys 3 import jieba 4 import matplotlib.pyplot as plt 5 from wordcloud import WordCloud,ImageCo

python生成词云

期末复习比较忙过段时间来专门写scrapy框架使用,今天介绍如何用python生成词云,虽然网上有很多词云生成工具,不过自己用python来写是不是更有成就感. 今天要生成的是励志歌曲的词云,百度文库里面找了20来首,如<倔强>,海阔天空是,什么的大家熟悉的. 所要用到的python库有 jieba(一个中文分词库).wordcould .matplotlib.PIL.numpy. 首先我们要做的是读取歌词.我将歌词存在了文件目录下励志歌曲文本中. 现在来读取他 #encoding=gbk l

使用python绘制词云

最近在忙考试的事情,没什么时间敲代码,一个月也没几天看代码,最近看到可视化的词云,看到网上也很多这样的工具, 但是都不怎么完美,有些不支持中文,有的中文词频统计得莫名其妙.有的不支持自定义形状.所有的都不能自定义颜色 于是网上找了一下,决定用python绘制词云,主要用到的是wordcloud库,安装只需要pip isntall wordcloud就行, 数据用的是酒店评论的数据,代码如下: # -*- coding: utf-8 -*- import matplotlib.pyplot as

词云wordcloud类介绍&amp;python制作词云图&amp;词云图乱码问题等小坑

词云图,大家一定见过,大数据时代大家经常见,我们今天就来用python的第三方库wordcloud,来制作一个大数据词云图,同时会降到这个过程中遇到的各种坑, 举个例子,下面是我从自己的微信上抓的微信好友签名,制作的词云图:看来用的做多的还是"方得始终"啊 首先我们需要几个库,pip完了导入 1 import chardet #检测字符类型的类 2 from wordcloud import WordCloud #词云库 3 import matplotlib.pyplot as pl

使用Python定制词云

一.实验介绍 1.1 实验内容 在互联网时代,人们获取信息的途径多种多样,大量的信息涌入到人们的视线中.如何从浩如烟海的信息中提炼出关键信息,滤除垃圾信息,一直是现代人关注的问题.在这个信息爆炸的时代,我们每时每刻都要更新自己的知识储备,而网络是最好的学习平台.对信息过滤和处理能力强,学习效率就会得到提高."词云"就是为此而诞生的."词云"是对网络文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或"

Python数据挖掘-词云

词云绘制 1.语料库的搭建.分词来源.移除停用词.词频统计 使用方法:os.path.join(path,name)   #连接目录与文件名或目录 结果为path/name import os import os.path import codecs filePaths=[] fileContents=[] for root,dirs,files in os.walk("D:\\Python\\Python数据挖掘\\Python数据挖掘实战课程课件\\2.4\\SogouC.mini\\Sam

Python数据挖掘-词云美化

1.语料库构建 由于不像之前是对很多个文件进行词频统计,所以不需要使用os.walk()方法遍历每一个文件: 只需使用codecs.open()打开相应的文件,(记得close): 然后使用jieba模块中的load_userdict()方法导入词库 import jieba import numpy import codecs import pandas file=codecs.open( "C:\\Users\\Jw\\Desktop\\python_work\\Python数据挖掘实战课程