library(shiny)
library(shinydashboard)
## Warning: package 'shinydashboard' was built under R version 4.1.3
##
## Attaching package: 'shinydashboard'
## The following object is masked from 'package:graphics':
##
## box
library(plotly)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.1.3
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
#Definir interfaz
ui <- dashboardPage(
dashboardHeader(title = "Portafolio Acciones"),
dashboardSidebar(
sidebarMenu(
#https://fontawesome.com/search?q=google&o=r
menuItem("Apple", tabName = "APL", icon = icon("apple")),
menuItem("Google", tabName = "GOG", icon = icon("google"))
)
),
dashboardBody(
tabItems(
# Tabla de la accion APPLE
tabItem(tabName = "APL",
sidebarLayout(
#Inputs en barra lateral
sidebarPanel(
fileInput(inputId = "inputAPL",label = "Cargar archivo de accion de Apple",accept = c("text/csv","text/comma-separated-values","text/plain",".csv")),
dateRangeInput(inputId = "fechasAPL",label = "Escoja un rango de fechas para graficar el precio",start = "2019-01-01",end = "2019-06-15")
),
#Outputs en panel principal
mainPanel(
box(title = "Serie historica del precio de cierre de la accion de Apple",
plotlyOutput(outputId = "Graf_APL_Precio"),width=13, collapsible = TRUE)
)
)
),
# Tabla de la accion APPLE
tabItem(tabName = "GOG",
sidebarLayout(
#Inputs en barra lateral
sidebarPanel(
fileInput(inputId = "inputGOG",label = "Cargar archivo de accion de Google",accept = c("text/csv","text/comma-separated-values","text/plain",".csv")),
dateRangeInput(inputId = "fechasGOG",label = "Escoja un rango de fechas para graficar el precio",start = "2019-01-01",end = "2019-06-15")
),
#Outputs en panel principal
mainPanel(
box(title = "Serie historica del precio de cierre de la accion de Google",
plotlyOutput(outputId = "Graf_GOG_Precio"),width=13, collapsible = TRUE)
)
)
)
) #Cierra Items
)#Cierra Body
)#Cierra Dashboard
# Definir la logica en la generacion de graficas
server <- function(input, output) {
#Reactividad: Solo leer archivo cuando se selecciona uno nuevo
archivoAPL<-eventReactive(input$inputAPL,{
if(is.null(input$inputAPL)){return(NULL)}
dataFileAPL<-read.csv(input$inputAPL$datapath)
return(dataFileAPL)
})
archivoGOG<-eventReactive(input$inputGOG,{
if(is.null(input$inputGOG)){return(NULL)}
dataFileGOG<-read.csv(input$inputGOG$datapath)
return(dataFileGOG)
})
#Renderizar grafica del precio de la accion de APPL
output$Graf_APL_Precio<-renderPlotly({
#Obtener datos
datos<-archivoAPL()
#Dar formato de fecha a la columna date de los datos cargados
datos$Date<-as.Date(datos$Date)
#Determinar cual es el min y max de fecha que enta en el archivo para luego comparar
minFecha<-min(datos$Date)
maxFecha<-max(datos$Date)
#Crear variables con las fechas ingresadas por el usuario
fecha1<-input$fechasAPL[1]
fecha2<-input$fechasAPL[2]
#Graficar solo si las fechas dadas por user estan contenidas en el archivo de datos
if(fecha1>=minFecha & fecha2<=maxFecha){
#Determinar valores a graficar en las fechas
x<-datos$Date[datos$Date>=fecha1 & datos$Date<=fecha2]
precio<-datos$Close[datos$Date>=fecha1 & datos$Date<=fecha2]
#Graficar
grafica<-plot_ly(x=~x,y=~precio, type = "scatter",mode="lines")
}
grafica
})
#Renderizar grafica del precio de la accion de Google
output$Graf_GOG_Precio<-renderPlotly({
#Obtener datos
datos<-archivoGOG()
#Dar formato de fecha a la columna date de los datos cargados
datos$Date<-as.Date(datos$Date)
#Determinar cual es el min y max de fecha que enta en el archivo para luego comparar
minFecha<-min(datos$Date)
maxFecha<-max(datos$Date)
#Crear variables con las fechas ingresadas por el usuario
fecha1<-input$fechasGOG[1]
fecha2<-input$fechasGOG[2]
#Graficar solo si las fechas dadas por user estan contenidas en el archivo de datos
if(fecha1>=minFecha & fecha2<=maxFecha){
#Determinar valores a graficar en las fechas
x<-datos$Date[datos$Date>=fecha1 & datos$Date<=fecha2]
precio<-datos$Close[datos$Date>=fecha1 & datos$Date<=fecha2]
#Graficar
grafica<-plot_ly(x=~x,y=~precio, type = "scatter",mode="lines")
}
grafica
})
}
# Run the application
shinyApp(ui = ui, server = server)
Shiny applications not supported in static R Markdown documents