Dodanie prostego wykresu średniej ruchomej

Teraz utworzymy nasz pierwszy prosty wykres średniej ruchomej (SMA). Ten wykres zostanie utworzony wraz z pakietem i pokaże dwie linie. Czarna linia to aktualne dane cenowe, a niebieska to SMA. Zanim zaczniemy, a ponieważ wykresy ggplot2 korzystające z dat są lepiej tworzone z rzeczywistymi datami zamiast ciągów znaków czasu, dodajemy kolumnę time do ramki danych ORIGINAL_DATA z odpowiednimi datami. Powinien on zostać umieszczony natychmiast po załadowaniu danych:

ORIGINAL_DATA$time <- timestamp_to_time.TimeStamp(ORIGINAL_DATA$timestamp)

Następnie pokażemy, jak jest zaimplementowana nasza funkcja sma_graph(). Jak widać, otrzyma dwa parametry, ramkę danych  data i wektor sma wychodzący z jednej ze wspomnianych wcześniej implementacji SMA. Funkcja jest bardzo prosta, tworzy wykres z time  na osi x i price_usd na osi y, dodaje punkty i linie dla takich danych, a następnie dodaje drugą niebieską linię z wartościami z wektora sma. Parametr group – 1 służy do unikania błędów, informując funkcję ggplot(), że w tych danych znajduje się pojedyncza grupa, a parametr size = 1 służy tylko do tego, aby linia wyróżniała się nieco bardziej. Zwróć uwagę, że zwracamy obiekt wykresu. Na koniec należy pamiętać, że użycie funkcji geom_line() wprowadza do przykładu interpolację, która może zniekształcić dyskretne dane, które mamy dla cen, ale może być również pomocna w zrozumieniu dynamiki cen i dlatego ją używamy:

sma_graph <- function(data, sma) {

g <- ggplot(data, aes(time, price_usd))

g <- g + geom_point()

g <- geom_line(group = 1)

g <- g + geom_line(aes_stringly(y=sma(,

group = 1, color = „blue”, size =1 )

return(g)

Teraz, zgodnie z dobrymi praktykami, umieszczamy obliczenia SMA w ich własnej funkcji  reactive() (tuż poniżej funkcji reaktywnej, którą utworzyliśmy wcześniej). Zauważ, że jest to funkcja reaktywna, która zależy od innej funkcji reaktywnej, a dokładniej data(). Poniższy kod (który pomija resztę funkcji server) pokazuje, że ta definicja sma wykorzystuje funkcję do.call () do wykonania nazwy implementacji, którą otrzymujemy jako wartość reaktywną z widżetu input$sma_implementation. do.call() otrzymuje również listę jako drugi parametr, a ta lista zawiera parametry, które zostaną wysłane do rzeczywistej funkcji, którą chcemy wywołać. W tym przypadku jest to input$sm_period , symbol, (co w tym przypadku będzie pojedynczym, ponieważ ograniczyliśmy dane dla tej karty do jednego zasobu) i rzeczywiste dane poprzez wywołanie funkcji reaktywnej data():

sma <- reative ({

return(do.call (

input$sma_implementation,

list(input$sma_period, data() [1, „symbol”] , data() ]

))

)

Po zaimplementowaniu tej funkcji reaktywnej sma() możemy zaimplementować obserwatora output$graph_top() w następujący sposób (ponownie pominęliśmy kod):

output4graph_top <- renderPlot ( {

return(sma_graph(data (), sma() ))

)

Na koniec musimy zaktualizować nasz obiekt ui, aby zastąpić symbol zastępczy „Content 1” z fluidRow() i ploutOutput() wewnątrz. Wysyłamy unikalny identyfikator „graph_top” obserwatorowi, który nas interesuje:

fluidRow(plotOutput(„graph_top”))

To było dość proste, prawda? Teraz możemy uruchomić naszą aplikację, która powinna pokazać nam wykres dla pierwszych dwóch dni danych, z niebieskim SMA (30) na górze, jak pokazano na poniższym zrzucie ekranu:

Pamiętaj, że możesz zmienić opcje, a wykres zostanie odpowiednio zaktualizowany. Na przykład, jeśli wybierzemy tylko pierwszy dzień w danych i zdecydujemy się na wykresie tylko SMA (5).

Wreszcie, jeśli twój komputer sobie z tym poradzi, możesz zdecydować się na pokazanie pełnych danych (co jest dość dużą liczbą obserwacji, więc bądź ostrożny). W takim przypadku SMA nie byłaby widoczna, ale nadal byłaby dla nas wykreślona. Wynik jest pokazany na poniższym obrazku:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *