Настройте несколько вспомогательных сюжетов со скользящими средними с помощью запонок и в автономном режиме - PullRequest
2 голосов
/ 04 апреля 2019

Я пытаюсь выбрать 4 разных цены товара из моего информационного кадра и построить их скользящую среднюю в виде подзаговора (2,2) с помощью сюжетных запонок. Буду признателен, если кто-нибудь может помочь в этом.

Я попытался построить цену как показано ниже Я наткнулся на технический анализ запонок, который позволяет мне строить скользящее среднее более чистым способом, однако я пока не слишком уверен, как его применить.

from plotly.offline import download_plotlyjs,init_notebook_mode,plot,iplot
from plotly import tools
import plotly.graph_objs as go

trace1= go.Scatter(name=',milk', x=df.Date, y=df['milk'])
trace2= go.Scatter(name='soap', x=df.Date, y=df['soap'])
trace3= go.Scatter(name='rice', x=df.Date, y=df['rice'])
trace4= go.Scatter(name='water', x=df.Date, y=df['water'])

fig = tools.make_subplots(rows=2, cols=2, subplot_titles=('milk', 'soap',
                                                      'rice', 'water'))
fig.append_trace(trace1, 1, 1)
fig.append_trace(trace2, 1, 2)
fig.append_trace(trace3, 2, 1)
fig.append_trace(trace4, 2, 2)

fig['layout'].update(height=1000, width=1800, title='supermarket')

plot(fig, filename='supermarket.html')

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

1 Ответ

1 голос
/ 05 апреля 2019

Вставьте приведенный ниже фрагмент кода в блокнот Jupyter, чтобы получить следующий график с использованием запонок и в автономном режиме:

Сюжет:

enter image description here

Код:

# imports
import plotly
from plotly import tools
import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import pandas as pd
import numpy as np
from IPython.core.display import display, HTML
import copy
import plotly.graph_objs as go

####### PART 1 - SETUP AND SAMPLE DATA #######
# setup
display(HTML("<style>.container { width:55% !important; } .widget-select > select {background-color: gainsboro;}</style>"))
init_notebook_mode(connected=True)
np.random.seed(123)
cf.set_config_file(theme='pearl')

# Random data using cufflinks
df = cf.datagen.lines().iloc[:,0:4]
df.columns = ['StockA', 'StockB', 'StockC', 'StockD']

####### PART 2 - FUNCTION FOR MOVING AVERAGES #######

# Function for moving averages
def movingAvg(df, win, keepSource):
    """Add moving averages for all columns in a dataframe.

    Arguments: 
    df -- pandas dataframe
    win -- length of movingAvg estimation window
    keepSource -- True or False for keep or drop source data in output dataframe

    """

    df_temp = df.copy()
    # Manage existing column names
    colNames = list(df_temp.columns.values).copy()
    removeNames = colNames.copy()

    i = 0
    for col in colNames:
        # Make new names for movingAvgs
        movingAvgName = colNames[i] + '_MA' #+ str(win)   
        # Add movingAvgs
        df_temp[movingAvgName] = df[col].rolling(window=win).mean()


        i = i + 1

    # Remove estimates with insufficient window length
    df_temp = df_temp.iloc[win:]

    # Remove or keep source data
    if keepSource == False:
        df_temp = df_temp.drop(removeNames,1)
    return df_temp

# Add moving averages to df
windowLength = 10
df = movingAvg(df=df, win=windowLength, keepSource = True)

####### PART 3 -PLOTLY RULES #######
# Structure lines / traces for the plots
# trace 1
trace1 = go.Scatter(
    x=df.index,
    y=df['StockA'],
    name='StockA'
)

trace1_ma = go.Scatter(
    x=df.index,
    y=df['StockA_MA'],
    name='StockA_MA'
)

# trace 2
trace2 = go.Scatter(
    x=df.index,
    y=df['StockB'],
    name='StockB'

)
trace2_ma = go.Scatter(
    x=df.index,
    y=df['StockB_MA'],
    name='StockB_MA'
)

# trace 3
trace3 = go.Scatter(
    x=df.index,
    y=df['StockC'],
    name='StockC'
)

trace3_ma = go.Scatter(
    x=df.index,
    y=df['StockC_MA'],
    name='StockC_MA'
)

# trace 4
trace4 = go.Scatter(
    x=df.index,
    y=df['StockD'],
    name='StockD'
)

trace4_ma = go.Scatter(
    x=df.index,
    y=df['StockD_MA'],
    name='StockD_MA'
)

# Structure traces as datasets
data1 = [trace1, trace1_ma]
data2 = [trace2, trace2_ma]
data3 = [trace3, trace3_ma]
data4 = [trace4, trace4_ma]

# Build figures
fig1 = go.Figure(data=data1)
fig2 = go.Figure(data=data2)
fig3 = go.Figure(data=data3)
fig4 = go.Figure(data=data4)

# Subplots setup and layout
figs = cf.subplots([fig1, fig2, fig3, fig4],shape=(2,2))
figs['layout'].update(height=800, width=1200,
                      title='Stocks with moving averages = '+ str(windowLength))

iplot(figs)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...