2016-08-04 2 views
0

tow 서브 플로트로 데이터를 그래프로 나타낼 계획입니다. 첫번째 서브 플로트에는 모든 주가, 이동 평균 (창 = 5), 이동 평균 (창 = 8) 및 이동 평균 (창 = 13)이 포함됩니다.add_subplot 함수를 사용할 때 범례가 누락되었습니다.

두 번째 서브 플로트에는 RSI .

처음에는 주가 (인덱스로 날짜 사용) 인 심각한 데이터를 얻습니다. 다음으로 이동 평균 인 심각한 데이터를 만들기 위해 ema라는 함수를 정의합니다.

나는 또한 rsi라는 심각한 데이터를 만들기 위해 rsi라는 함수를 만든다.

그런 다음 graph_with_indicator라는 다음 함수를 정의하려고합니다. 이 함수에서는 우선 모든 ema와 주가를 데이터 프레임으로 합칩니다. 그런 다음 rsi를 심각하게 만듭니다.

다음으로 add_subplot (211)을 사용하여 첫 번째 데이터 프레임을 그립니다. 그런 다음 add_subplot (212)을 사용하여 rsi를 그렸다.

실제로 범례를 제외하고는 성공합니다. rsi 범례 만 생성 할 수 있지만 첫 번째 그래프에는 생성 할 수 없습니다.

아무도 도와 줄 수 있습니까?

내 첫 번째 그래프는 데이터 프레임이지만 두 번째 그래프는 심각하므로 두 번째 범례를 생성 할 수 있습니까?

그리고 또 다른 질문이 있습니다. 실제로 모든 데이터를 하나의 데이터 프레임에 결합한 다음 별도로 서브 플로트를 만들 수 있습니까? 예를 들어 5 열의 데이터 프레임을 얻은 다음 첫 번째 두 개의 열을 첫 번째 서브 그림으로 만들고 마지막 두 개의 열을 두 번째 서브 그림으로 만듭니다.

def graph_with_indicator(stock): 
    #5,8,13 
    df = pd.DataFrame(stock) 
    name = str(df.columns[0]) 
    windows = [5,8,13] 
    for window in windows: 
     df_tmp = ema(stock,window) 
     df = df.join(df_tmp) 

    stock_rsi = rsi(stock,14) 


    fig = plt.figure() 
    fig.suptitle(name, fontsize=20) 
    ax1 = fig.add_subplot(211) 

    ax1.xaxis.set_visible(False) 
    ax2 = fig.add_subplot(212) 
    ax1.plot(df) 
    ax2.plot(stock_rsi) 
    ax1.legend(loc='upper left') 
    ax2.legend(loc='upper left') 
    plt.subplots_adjust(left= 0.1, bottom= 0.1, right= 0.98, top= 0.9, wspace= 0, hspace= 0.1) 

    plt.show() 

답변

0

이 두 라인이에

ax1.plot(df) 
ax2.plot(stock_rsi) 

변경, 전설이 작동하도록하려면 : 여기

내 코드입니다

ax1.plot(df, label="df") 
ax2.plot(stock_rsi, label="stock_rsi") 

이유 왜하기 matplotlib의 때문에 전설을 그리기 위해서는 레이블이 필요합니다.

+0

감사합니다. 알았다. –

관련 문제