2017-02-11 2 views
0

을 플롯 할 때 '플로트'개체가되지 호출하지만 나는이 코드 줄에 대한 오류, TypeError: 'float' object is not callable을 얻을 :형식 오류 : 함수에게 내가 pyplot를 사용하여 파이썬에서 선 그래프를 그릴려고

ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 

나는 기본적으로 라인 그래프를 플롯 할 필요가있는 함수 인 p(1-p)^(i-1)을 가지고있다. 나는 1-51의 좌표 배열을 가지고있다. 그리고 해당 함수로 해당 y 좌표를 가져와야합니다. 나는 또한 시도했다 : p(1-p)**(i-1), 그러나 그것은 일하지 않았다.

def test(): 
    p = 0.2 
    plt.figure(1) 
    #create x coordinates [1-51] 
    xcoord = [i for i in range(1,51)] 
    #create y coordinates from formula 
    ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 
    plt.plot(xcoord,ycoord) 
    plt.draw() 
    plt.show() 

test() 
+0

당신은'P (1-p)의''p''float', 당신이 수행 할 작업되어 있나요? –

+0

파이썬 (및 내가 알고있는 대부분의 다른 컴퓨터 언어)에서'p (1-p)'는'p' 번'(1-p)'를 의미하지 않습니다. 곱셈 연산자를 명시 적으로 작성해야합니다. 즉 :'p * (1-p)'. _ 많은 다른 언어들과 달리, 파이썬에서의 지수 연산은'^'이 아니라'**'로 쓰여집니다. – martineau

답변

1

을해야 (px(1-p))^(i-1) [전원 I-1에 P 배 (1-P)] 수학 방정식을 쓰면 '*'기호를 생략 할 수 없습니다.

p (1-p) 

은 다음과 같아야합니다

p * (1-p) 
1

오류 자명하고,이 블록 (P)에서

ycoord = [math.pow(p(1-p),(i-1)) for i in range(1,51)] 

부동 소수점 수없는 방법 이름이다

여기 내 전체 코드이다. 여기에서 호출하고자하는 함수 p가 있다면이 변수 p의 이름을 다른 것으로 또는 그 반대로 바꿉니다.

는 의미 또한 경우는 경우에 사용될 수있다 파이썬 승산의 구문은 동일하지 pow(p*(1-p), (i-1))