Python word cloud - IndexError:字符串索引超出范围

时间:2017-02-27 18:44:57

标签: python-3.x word-cloud

我正在尝试使用python中的单词字典构建wordcloud。 这是我的剧本

from wordcloud import WordCloud 
words = {'Python':15, 'Pandas':13, 'R':16, 'Analyis':10, 'Scikit learn':19, 'Matplotlib':10}
wc = WordCloud()
wcloud = wc.generate_from_frequencies(words)

import matplotlib.pyplot as plt
plt.imshow(wcloud)
plt.axis("off")
plt.figure()
plt.imshow(wcloud)
plt.axis("off")
plt.show()

我收到错误

    wcloud = wc.generate_from_frequencies(words)
  File "...\Anaconda3\lib\site-packages\wordcloud\wordcloud.py", line 263, in generate_from_frequencies
    frequencies = sorted(frequencies, key=item1, reverse=True)

IndexError: string index out of range

有人可以帮我解决这个问题。 我能够为文本文件生成wordcloud。但我想在python字典中传递自定义单词频率(上面脚本中显示的例子)

我正在运行Windows 7,Anaconda Python 3.5,使用Idlex和spyder IDE

1 个答案:

答案 0 :(得分:2)

来自wordcloud docs

  

静态generate_from_frequencies(frequencies)

     

从单词和频率创建word_cloud。

     

参数: frequencies元组数组

frequencies应该是一个元组列表,你传入一本字典。

更改

wcloud = wc.generate_from_frequencies(words)

wcloud = wc.generate_from_frequencies(list(words.items()))

注意:此答案适用于wordcloud版本1.2.1。 Github上当前主分支中的On 22 October 2016 the code was changed。这个尚未发布的版本(2.0?)将frequencies的数据类型从tuple更改为dict。 (OP的代码可以在新版本中正确运行。)

这是更新的docstring:

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

    """