我正在尝试使用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
答案 0 :(得分:2)
静态
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
"""