2014-12-04 1 views
0

텍스트의 모든 색상 단어를 계산 한 후 원형 차트에 표시하는 모듈을 작성하려고합니다. 나는 이미 카운팅과 차트를 별도로 코딩했지만, 어떻게 연결하는지 알 수 없다.사용자 정의 함수에서 차트로 직접 이동하는 방법은 무엇입니까?

는 지금은이 :

def colorperc(text): 
    y0 = text.count("red")...text.count("rust") 
    y1 = ... 
    return {y0...y10} 

colorperc(mobydick.txt) 

... 
fracs y0, y1... 

어떻게 이러한 반환 값을 타고 pieChart로의 fracs로 연결합니까? 오류가 계속 발생합니다. NameError : name 'y0'이 정의되지 않았습니다.

+0

사용중인 코딩 언어에 대해 자세히 알려주십시오. –

+0

오 죄송합니다. 그것은 파이썬에 있습니다. –

+0

'y0'이 접근하는 범위 내에서 정의되지 않았기 때문에 에러가 발생한 것 같습니다. 'y0'는 로컬 변수이며'colorperc' 함수의 범위 내에서 유효한 식별자 일뿐입니다. –

답변

0

우선 text.count은 원하지 않는 것 같습니다.

>>> "Red wired tired".count("red") 
2 

당신은 아마 라인, 소문자로 텍스트 라인을 통해 읽고 각 행을 분할하고, Counter을 업데이트 할 것입니다. 그런 다음 Matt이 말했듯이 로컬 변수에 액세스하지 않고 함수가 반환 한 값을 할당해야합니다.

귀하의 의견에 nltk을 사용하고 있다고 말했기 때문에 아마도 (테스트되지 않은) 이와 비슷한 것일 수 있습니다. 문제 설명과 일치하기 때문에 전체 텍스트가 메모리에있는 것이 행복하다고 가정합니다. 우리는 단순히 (=로) 지정을 사용

from collections import Counter 
import matplotlib.pyplot as plt 
import nltk 

def countcolors(text) 
    tokens = nltk.word_tokenize(text) 
    tokens = map(lamda x: x.lower(), tokens) 
    ctr = Counter(tokens) 
    colorlist = ("red", "rust", "blue", "green") 
    colorcounts = dict((color,ctr[color]) for clr in colorlist) 
    return colorcounts 

#we'll call the text in memory `mytext` 

colors, counts = countcolors(mytext).items() 
fig, ax = plt.subplots(1,1) 
ax.pie(counts,labels=colors) 
plt.show() 

주 함수에서 반환 값을 얻을 수 있습니다.

+0

실제로 nltk를 사용하여 텍스트를 읽었습니다 (약 15 개를 수행해야하므로이 모듈을 재사용 할 수있게되었습니다).하지만 어떻게해야할지 모르겠지만 함수에서 반환 된 값을 할당해야합니다. . –

관련 문제