ValueError: ImageColorGenerator is smaller than the canvas

程序一开始运行没问题,都能成功生成。直到我分析文档用了个8w+字数的文档,max_words设为20+就报错,15能成功生成,期间换了词频背景也没用。
也试了网上说的更改width、height,甚至换过像素很大的背景,都不起作用。
报错
最后解决方法是降低wordcloud版本,我wordcloud版本一开始默认下的最新版1.9.3,然后降到了1.8,就可以成功生成词云,不报错了,也不用设置width、height,默认就行。

pip install wordcloud==1.8

运行成功

词云生成完整代码:
参考用python实现词频分析+词云

import re                           # 正则表达式库
import jieba                        # 结巴分词
import jieba.posseg                 # 词性获取
import collections                  # 词频统计库
import numpy                        # numpy数据处理库
from PIL import Image               # 图像处理库
import wordcloud                    # 词云展示库
import matplotlib.pyplot as plt     # 图像展示库(这里以plt代表库的全称)

# 主要功能自定义设置
Analysis_text = '分析文档.txt'        # 分析文档
userdict = '用户词典.txt'             # 用户词典
StopWords = '停用词库.txt'            # 停用词库
number = 50                          # 统计个数
Output = '词频.txt'                   # 输出文件
background = '词频背景.jpg'           # 词频背景

# 读取文件
fn = open(Analysis_text,'r',encoding = 'UTF-8')  # 打开文件
string_data = fn.read()                          # 读出整个文件
fn.close()                                       # 关闭文件

# 文本预处理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') # 定义正则表达式匹配模式(空格等)
string_data = re.sub(pattern, '', string_data)     # 将符合模式的字符去除

# 动态调整词典
jieba.suggest_freq('林小木', True)     #True表示该词不能被分割,False表示该词能被分割

# 添加用户词典
jieba.load_userdict(userdict)

# 文本分词
seg_list_exact = jieba.cut(string_data, cut_all=False, HMM=True)    # 精确模式分词+HMM
object_list = []

# 去除停用词(去掉一些意义不大的词,如标点符号、嗯、啊等)
with open(StopWords, 'r', encoding='UTF-8') as meaninglessFile:
    stopwords = set(meaninglessFile.read().split('\n'))
stopwords.add(' ')
for word in seg_list_exact:         # 循环读出每个分词
    if word not in stopwords:       # 如果不在去除词库中
        object_list.append(word)    # 分词追加到列表

# 词频统计
word_counts = collections.Counter(object_list)       # 对分词做词频统计
word_counts_top = word_counts.most_common(number)    # 获取前number个最高频的词

# 英文词性转中文词性字典:简洁版
En2Cn = {
   
   
    'a'    : '形容词',
    'ad'   : '形容词',
    'ag'   : '形容词',
    'al'   : '形容词',
    'an'   : '形容词',
    'b'    : '区别词',
    'bl'   : '区别词',
    'c'    : '连词',
    'cc'   : '连词',
    'd'    : '副词',
    'e'    : '叹词',
    'eng'  : '英文',
    'f'    : '方位词',
    'g'    : '语素',
    'h'    : '前缀',
    'i'    : '成语',
    'j'    :</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值