AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 78340918
Accepted
firmo23
firmo23
Asked: 2024-04-17 20:19:24 +0800 CST2024-04-17 20:19:24 +0800 CST 2024-04-17 20:19:24 +0800 CST

Índice xts de subconjunto com base no intervalo de datas em um aplicativo brilhante

  • 772

No shinyaplicativo abaixo, estou tentando subdividir o objeto xts e, portanto, o gráfico com base no intervalo de datas, mas enquanto o gráfico inicial é criado, recebo Aesthetics must be either length 1 or the same as the data (2514).

## app.R ##
library(shiny)
library(shinydashboard)
library("vctrs")
library("xts")
library('quantmod')
library('tseries')
library('forecast')
library('ggplot2')
library('reshape2')
library(stats)
library(forecast)
library(shinyWidgets)


ABT <- getSymbols(Symbols = "ABT", src = "yahoo", from = Sys.Date() - 20*365, 
                  to = Sys.Date(), auto.assign = FALSE)

# Select only Close price
ABT <- Cl(ABT)

ABV<- getSymbols(Symbols = "ABV", src = "yahoo", from = Sys.Date() - 20*365, 
                 to = Sys.Date(), auto.assign = FALSE)
ABV <- Cl(ABV)

SP500 <- getSymbols(Symbols = "^GSPC", src = "yahoo", from = Sys.Date() - 20*365, 
                    to = Sys.Date(), auto.assign = FALSE)
SP500<-Cl(SP500)
Dow_J <- getSymbols("^DJI", src = "yahoo", from = Sys.Date() - 20*365, 
                    to = Sys.Date(), auto.assign = FALSE)
Dow_J<-Cl(Dow_J)

# Assuming your xts object is named 'my_xts'
first_row_name <- index(ABT)[1]
last_row_name <- index(ABT)[nrow(ABT)]

ui <- dashboardPage(
  dashboardHeader(title = "Share price prediction and movement"),
  dashboardSidebar(
    
    dateRangeInput('dateRange',
                   label = 'Date range',
                   start = first_row_name , end = Sys.Date() 
    )
    
  ),
  dashboardBody(
    
    fluidRow(
      column(12,
             plotOutput("plot2")
      )
    )
  )
)

server <- function(input, output) { 
  
  output$plot2<-renderPlot({
    spf_dw_data <- merge(SP500, Dow_J)
    spf_dw_data<-subset(spf_dw_data, index(spf_dw_data) >= input$dateRange[1] & index(spf_dw_data) <= input$dateRange[2])
    DateSJ <- index(spf_dw_data)
    
    ggplot(spf_dw_data, aes(x=DateSJ)) +
      geom_line(aes(y = SP500, color = "S&P 500"), size = 1) +
      geom_line(aes(y = Dow_J, color = "Dow Jones"), size = 1) +
      labs(title = "Stock Prices Over Time",
           y = "Adjusted Close Price",
           color = "Company") +
      theme_minimal()
    
  })
  
  
}

shinyApp(ui, server)
  • 1 1 respostas
  • 20 Views

1 respostas

  • Voted
  1. Best Answer
    br00t
    2024-04-17T21:17:23+08:002024-04-17T21:17:23+08:00

    Não tenha vergonha de usar xtsum poderoso mecanismo nativo de filtragem de datas e lembre-se de que o ggplot foi feito para ser usado com data.frameobjetos... ele funcionará com xtsobjetos, mas haverá peculiaridades. A versão abaixo deve funcionar da maneira que você espera

    ## app.R ##
    library(shiny)
    library(shinydashboard)
    library("vctrs")
    library("xts")
    library('quantmod')
    library('tseries')
    library('forecast')
    library('ggplot2')
    library('reshape2')
    library(stats)
    library(forecast)
    library(shinyWidgets)
    
    
    ABT <- getSymbols(Symbols = "ABT", src = "yahoo", from = Sys.Date() - 20*365, 
                      to = Sys.Date(), auto.assign = FALSE)
    
    # Select only Close price
    ABT <- Cl(ABT)
    
    ABV<- getSymbols(Symbols = "ABV", src = "yahoo", from = Sys.Date() - 20*365, 
                     to = Sys.Date(), auto.assign = FALSE)
    ABV <- Cl(ABV)
    
    SP500 <- getSymbols(Symbols = "^GSPC", src = "yahoo", from = Sys.Date() - 20*365, 
                        to = Sys.Date(), auto.assign = FALSE)
    SP500<-Cl(SP500)
    Dow_J <- getSymbols("^DJI", src = "yahoo", from = Sys.Date() - 20*365, 
                        to = Sys.Date(), auto.assign = FALSE)
    Dow_J<-Cl(Dow_J)
    
    # Assuming your xts object is named 'my_xts'
    first_row_name <- index(ABT)[1]
    last_row_name <- index(ABT)[nrow(ABT)]
    
    ui <- dashboardPage(
      dashboardHeader(title = "Share price prediction and movement"),
      dashboardSidebar(
        
        dateRangeInput('dateRange',
                       label = 'Date range',
                       start = first_row_name , end = Sys.Date() 
        )
        
      ),
      dashboardBody(
        
        fluidRow(
          column(12,
                 plotOutput("plot2")
          )
        )
      )
    )
    
    server <- function(input, output) { 
      
      output$plot2 <- renderPlot({
        spf_dw_data <- merge(SP500, Dow_J)
        date_filter_str <- sprintf('%s::%s', input$dateRange[ 1 ], input$dateRange[ 2 ])
        spf_dw_data <- spf_dw_data[ date_filter_str ]
        spf_dw_data_df <- as.data.frame(spf_dw_data)
        spf_dw_data_df$date <- rownames(spf_dw_data_df) |> as.Date()
        
        ggplot(spf_dw_data_df, aes(x = date)) +
          geom_line(aes(y = GSPC.Close, color = "S&P 500"), size = 1) +
          geom_line(aes(y = DJI.Close, color = "Dow Jones"), size = 1) +
          labs(title = "Stock Prices Over Time",
               y = "Adjusted Close Price",
               color = "Company") +
          theme_minimal()
        
      })
      
      
    }
    
    shinyApp(ui, server)
    
    • 2

relate perguntas

  • Adicionar número de série para atividade de cópia ao blob

  • A fonte dinâmica do empacotador duplica artefatos

  • Selecione linhas por grupo com 1s consecutivos

  • Lista de chamada de API de gráfico subscritoSkus estados Privilégios insuficientes enquanto os privilégios são concedidos

  • Função para criar DFs separados com base no valor da coluna

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle?

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Quando devo usar um std::inplace_vector em vez de um std::vector?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Martin Hope
    Aleksandr Dubinsky Por que a correspondência de padrões com o switch no InetAddress falha com 'não cobre todos os valores de entrada possíveis'? 2024-12-23 06:56:21 +0800 CST
  • Martin Hope
    Phillip Borge Por que esse código Java simples e pequeno roda 30x mais rápido em todas as JVMs Graal, mas não em nenhuma JVM Oracle? 2024-12-12 20:46:46 +0800 CST
  • Martin Hope
    Oodini Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores? 2024-12-12 06:27:11 +0800 CST
  • Martin Hope
    sleeptightAnsiC `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso? 2024-11-09 07:18:53 +0800 CST
  • Martin Hope
    The Mad Gamer Quando devo usar um std::inplace_vector em vez de um std::vector? 2024-10-29 23:01:00 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST
  • Martin Hope
    MarkB Por que o GCC gera código que executa condicionalmente uma implementação SIMD? 2024-02-17 06:17:14 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve