当前位置:   article > 正文

Python文本分析——词云图(wordcloud+jieba)_imagecolorgenerator is smaller than the canvas

imagecolorgenerator is smaller than the canvas

目录

1.实现

2.BUG解决


1.词云图实现

一、准备

环境:Win10+Python 3.6.1  64bit+PyCharm

词云库:wordcloud(pycharm如何安装库

汉语分词库:jieba(pycharm如何安装库

字体:中文字体(如何查看电脑中的字体位置

文本:txt格式(随便下载个小说)

效果:http://www.xinyrh.com/newsinfo/821001.html

二、无背景分词

  1. import matplotlib.pyplot as plt # 数学绘图库
  2. import jieba # 分词库
  3. import numpy as np
  4. from wordcloud import WordCloud,ImageColorGenerator # 词云库
  5. # 1、读入txt文本数据D:\Desktop\SmallOA\media\tes.txt
  6. text = open(r'D:\Desktop\SmallOA\media\tes.txt', "r",encoding='utf-8', errors='ignore').read()
  7. # 2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径
  8. # 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
  9. cut_text= jieba.cut(text)
  10. result = "/".join(cut_text) # 必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
  11. # print(result)
  12. # 3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
  13. # 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
  14. #D:\Desktop\SmallOA\media\Project\muban\dig_close.png
  15. wc = WordCloud(font_path=r"c:\WINDOWS\FONTS\MSYHL.TTC", background_color='white', width=400,
  16. height=300, max_font_size=50,
  17. max_words=1000) # ,min_font_size=10)#,mode='RGBA',colormap='pink')
  18. wc.generate(result)
  19. wc.to_file(r"D:\Desktop\SmallOA\media\wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
  20. # 4、显示图片
  21. plt.figure("词云图") # 指定所绘图名称
  22. plt.imshow(wc) # 以图片的形式显示词云
  23. plt.axis("off") # 关闭图像坐标系
  24. plt.show()

三、有背景分词

  1. import matplotlib.pyplot as plt # 数学绘图库
  2. import jieba # 分词库
  3. import numpy as np
  4. from PIL import Image
  5. from wordcloud import WordCloud,ImageColorGenerator # 词云库
  6. # 1、读入txt文本数据D:\Desktop\SmallOA\media\tes.txt
  7. text = open(r'D:\Desktop\SmallOA\media\tes.txt', "r",encoding='utf-8', errors='ignore').read()
  8. # 2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径
  9. # 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
  10. cut_text= jieba.cut(text)
  11. result = "/".join(cut_text) # 必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
  12. # print(result)
  13. # 3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
  14. image = Image.open(r'D:\Desktop\SmallOA\media\214.png')
  15. graph = np.array(image)
  16. # 无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
  17. #D:\Desktop\SmallOA\media\Project\muban\dig_close.png
  18. wc = WordCloud(font_path=r"c:\WINDOWS\FONTS\MSYHL.TTC",
  19. background_color='white',#设置底色
  20. width=400,height=300, #制定图片大小,应小于背景像素
  21. mask=graph, # 指定背景图形状
  22. max_font_size=50,#最大字体
  23. max_words=1000,#最大实现字数
  24. )
  25. wc.generate(result)
  26. #4、绘制文字的颜色以背景图颜色为参考
  27. image_color = ImageColorGenerator(graph)#从背景图片生成颜色值
  28. wc.recolor(color_func=image_color)
  29. wc.to_file(r"D:\Desktop\SmallOA\media\wordcloud.png") # 按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
  30. # 5、显示图片
  31. plt.figure("词云图") # 指定所绘图名称
  32. plt.imshow(wc) # 以图片的形式显示词云
  33. plt.axis("off") # 关闭图像坐标系
  34. plt.show()

2.BUG解决

一、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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/921311
推荐阅读
  

闽ICP备14008679号