2016-08-04 2 views
0

Я планирую график данных с буфером подзаголовка. В первом подзаголовке он включает в себя всю цену акций, скользящую среднюю (окно = 5), скользящую среднюю (окно = 8) и скользящую среднюю (окно = 13)легенда отсутствует, когда я использовал функцию add_subplot

Во втором подзаголовке оно включает только RSI ,

Первоначально я получаю серьезную информацию, которая представляет собой цену акций (используя дату как индекс) , тогда я определяю функцию ema, чтобы создать серьезную информацию, которая является скользящей средней.

После этого я также создаю функцию rsi, чтобы создать серьезную информацию, являющуюся rsi.

Затем я попытаюсь определить следующую функцию, называемую graph_with_indicator. В этой функции я сначала присоединяюсь ко всем ema и цене акций вместе как dataframe Затем я создаю rsi серьезный.

Далее я использовал add_subplot (211) для построения первого кадра данных. После этого я использовал add_subplot (212) для построения rsi.

действительно успешный, за исключением легенды. Это может привести только к легенде rsi, но не к первому графику.

Может ли кто-нибудь мне помочь?

Это потому, что мой первый график - это dataframe, а второй - серьезный, поэтому я могу создать легенду о втором?

И у меня есть еще один вопрос: могу ли я на самом деле объединить все данные в один фрейм данных, а затем сделать подзаголовок отдельно. Например, у меня есть пятикадровый кадр данных, затем создайте первые два столбца в первый подзаговор и два последних столбца во второй подзаговор?

Вот мой код:

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

спасибо. Я понял. –

Смежные вопросы