Python 绘制词云

1. 准备

  • 安装好python,安装时包含pip 包管理工具
  • pip install jieba
  • pip install matplotlib
import matplotlib.pyplot as plt     #数学绘图库  
import jieba               #分词库  
from wordcloud import WordCloud   #词云库  
  • 安装wordcloud词云库, pip install 这次装不了,需要手动下载安装
    下载库文件wordcloud-1.3.3-cp36-cp36m-win_amd64.whl,适用win64-python3.6

2. 示例代码

import matplotlib.pyplot as plt     #数学绘图库  
import jieba               #分词库  
from wordcloud import WordCloud   #词云库  
  
#1、读入txt文本数据  
text = open(r'D:\\Code\\Document\\tonghua.txt',"r").read()  
  
#2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径  
# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒  
  
cut_text= jieba.cut(text)  
result= "/".join(cut_text)#必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云  
#print(result)  
  
#3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库  
#无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'  
wc = WordCloud(font_path=r"D:\\Code\\Python\\Monaco Yahei.ttf",background_color='white',width=800,height=600,max_font_size=50,  
               max_words=1000)#,min_font_size=10)#,mode='RGBA',colormap='pink')  
wc.generate(result)  
wc.to_file(r"D:\\Code\\Python\\cat.png") #按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰  
  
# 4、显示图片  
plt.figure("词云图") #指定所绘图名称  
plt.imshow(wc)       # 以图片的形式显示词云  
plt.axis("off")      #关闭图像坐标系  
plt.show()  

中文词云注意编码问题,以下代码实现了中文词云,加入了停用词库,可以自定义词云形状

# -*- coding: utf-8 -*-
#wordcloud生成中文词云

from wordcloud import WordCloud
import codecs
import jieba
#import jieba.analyse as analyse
from scipy.misc import imread
import os
from os import path
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont

# 绘制词云
def draw_wordcloud():
    #读入一个txt文件
    comment_text = open('D:\\Code\\Python\\text\\tonghua.txt','r',encoding='gb18030').read()
    #读取本地停当词库
    stopwords = open('D:\\Code\\Python\\text\\stopwords.txt','r',encoding='utf-8').read().split("\n")
    #结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云
    cut_text = " ".join(jieba.cut(comment_text))
    d = path.dirname(__file__) # 当前文件文件夹所在目录
    color_mask = imread("D:\\Code\\Python\\text\\fangzi.png") # 读取背景图片
    cloud = WordCloud(
        #设置字体,不指定就会出现乱码
        font_path="D:\\Code\\Python\\text\\Monaco Yahei.ttf",
        #font_path=path.join(d,'simsun.ttc'),
        #设置背景色
        background_color='black',
        stopwords= stopwords,     
        #词云形状
        mask=color_mask,
        #允许最大词汇
        max_words=200,
        #最大号字体
        max_font_size=400
    )
    word_cloud = cloud.generate(cut_text) # 产生词云
    word_cloud.to_file("pjl_cloud4.jpg") #保存图片
    #  显示词云图片
    plt.imshow(word_cloud)
    plt.axis('off')
    plt.show()

if __name__ == '__main__':

    draw_wordcloud()

你可能感兴趣的:(Python 绘制词云)