2017-02-27 2 views
1

파이썬에서 단어 사전을 사용하여 wordcloud를 작성하려고합니다. 여기에 누군가가이 문제를 해결하는 방법에 대해 저를 도와주세요 수Python 워드 클라우드 - IndexError : 문자열 인덱스가 범위를 벗어났습니다.

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 

처럼 내 스크립트

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() 

내가 오류를 얻고있다. 텍스트 파일에 대한 wordcloud를 생성 할 수 있습니다. 하지만 난 wordcloud docs에서 Idlex와 스파이더 IDE

답변

2

를 사용하여 (위의 스크립트에 표시된 예) 파이썬 사전 나는 윈도우 7에서 실행 해요

, 아나콘다 파이썬 3.5에서 사용자 지정 단어 주파수를 전달하려는 :

static generate_from_frequencies(frequencies)

Create a word_cloud from words and frequencies.

Parameters: frequencies : array of tuples

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으로 변경합니다. (영업의 코드는 새 버전에서 제대로 실행 한 것입니다.)

여기

업데이트 된 문서화 문자열입니다 : 그냥 참고로

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 

    """ 
+0

,이 GitHub의에서 현재 마스터 지점에서 변경되었습니다. –

+0

@MadPhysicist : 감사합니다. 나는 미래의 독자를 오도하지 않기를 바랍니다. –