赞
踩
目录
一、准备
环境:Win10+Python 3.6.1 64bit+PyCharm
词云库:wordcloud(pycharm如何安装库)
汉语分词库:jieba(pycharm如何安装库)
字体:中文字体(如何查看电脑中的字体位置)
文本:txt格式(随便下载个小说)
效果:http://www.xinyrh.com/newsinfo/821001.html
二、无背景分词
- import matplotlib.pyplot as plt # 数学绘图库
- import jieba # 分词库
- import numpy as np
- from wordcloud import WordCloud,ImageColorGenerator # 词云库
-
- # 1、读入txt文本数据D:\Desktop\SmallOA\media\tes.txt
- text = open(r'D:\Desktop\SmallOA\media\tes.txt', "r",encoding='utf-8', errors='ignore').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'
- #D:\Desktop\SmallOA\media\Project\muban\dig_close.png
- wc = WordCloud(font_path=r"c:\WINDOWS\FONTS\MSYHL.TTC", background_color='white', width=400,
- height=300, max_font_size=50,
- max_words=1000) # ,min_font_size=10)#,mode='RGBA',colormap='pink')
- wc.generate(result)
- wc.to_file(r"D:\Desktop\SmallOA\media\wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
-
- # 4、显示图片
- plt.figure("词云图") # 指定所绘图名称
- plt.imshow(wc) # 以图片的形式显示词云
- plt.axis("off") # 关闭图像坐标系
- plt.show()
三、有背景分词
- import matplotlib.pyplot as plt # 数学绘图库
- import jieba # 分词库
- import numpy as np
- from PIL import Image
- from wordcloud import WordCloud,ImageColorGenerator # 词云库
-
- # 1、读入txt文本数据D:\Desktop\SmallOA\media\tes.txt
- text = open(r'D:\Desktop\SmallOA\media\tes.txt', "r",encoding='utf-8', errors='ignore').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默认不支持中文,所以这里需已下载好的中文字库
-
- image = Image.open(r'D:\Desktop\SmallOA\media\214.png')
- graph = np.array(image)
- # 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
- #D:\Desktop\SmallOA\media\Project\muban\dig_close.png
- wc = WordCloud(font_path=r"c:\WINDOWS\FONTS\MSYHL.TTC",
- background_color='white',#设置底色
- width=400,height=300, #制定图片大小,应小于背景像素
- mask=graph, # 指定背景图形状
- max_font_size=50,#最大字体
- max_words=1000,#最大实现字数
- )
- wc.generate(result)
-
- #4、绘制文字的颜色以背景图颜色为参考
- image_color = ImageColorGenerator(graph)#从背景图片生成颜色值
- wc.recolor(color_func=image_color)
- wc.to_file(r"D:\Desktop\SmallOA\media\wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
-
- # 5、显示图片
- plt.figure("词云图") # 指定所绘图名称
- plt.imshow(wc) # 以图片的形式显示词云
- plt.axis("off") # 关闭图像坐标系
- plt.show()
一、UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 2: illegal multibyte sequence
编码问题:代码中以设置,一般不会再出问题。
text = open(r'D:\Desktop\SmallOA\media\tes.txt', "r",encoding='utf-8', errors='ignore').read()
二、OSError: cannot open resource
字体有问题
三、ImageColorGenerator is smaller than the canvas
这个问题出来后我问了其他人,群里告诉我是因为我的底片比我设置width和height要小。就像我的口袋装不下一个苹果一样,而我非要塞进去,产生溢出,自然就报错了。解决方法是查看底片的宽高,然后去设置内容的宽高。最好等于图片的宽高。
参考:
https://vip01.blog.csdn.net/article/details/77622174?depth_1-
https://blog.csdn.net/fwpevil/article/details/86547428
https://blog.csdn.net/Kafkaer/article/details/94167718
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。