Autor:

Email:

RPubs:

Twitter:

Linkedin:

Jack Bedoya Acosta

https://rpubs.com/jbedoya/

https://twitter.com/JacksitoEST

https://ec.linkedin.com/in/jack-bedoya-acosta-24ab9b1b4

some text


Creación de Dashboard de Precios de Banano

En esta Aplicación Shiny, se tiene un dashboard con detalles como Mapas temáticos Graficos dinamicos entre otros.

Detalle Paso a Paso de la Creación del Dashoboard

Dolares/KG de Banano por país:

## 1- Creamos el UI

## 2- Creamos el Dashboard

ui <- dashboardPage(skin = "purple",

## 3- Ponemos título al Dashboard
                    dashboardHeader(title = "Precios del Banano",
                                    titleWidth = 260,
                                    dropdownMenu(type = "messages",
                                                 messageItem(
                                                     from = "Precio Internacional del Banano",
                                                     message = "Responsables Analisis de Negocios",icon = icon("box-open")))),
## 4- Desplegamos la lista de Menú

                    dashboardSidebar(
                        sidebarMenu(
                            menuItem("Resumen", tabName = "dashboard1", icon = icon("file-contract")),
                            menuItem("Análisis", icon = icon("project-diagram"), tabName = "dashboard3"),
                            menuItem("Fuentes", icon = icon("info-circle"), tabName = "dashboard4")
                        )
                        
                        
                    ),

## 5- Creamos el cuerpo de cada Lista de Menú donde estan todas las variables calculadas en la secion server
                    dashboardBody(
                        
                        tabItems(
                            tabItem(tabName = "dashboard1",
                                    fluidRow(
                                        column(width=2),
                                        column(tags$style(".fa-database {color:#E87722}"),
                                               h3(p(em("Precios del Banano"),style="color:black;text-align:center")),
                                               width=8,style="background-color:lavender;border-radius: 10px")),
                                    br(),
                                    
                                    fluidRow(column(width=2, icon("scroll","fa-5x"),align="center"),
                                             #fluidRow(column(width=2, img(src = "grupasa.png", height = 72, width = 72),align="center"),
                                             column(
                                                 p("Esta serie da los precios promedio al por mayor de banano por país de origen. 
                                                   Los precios son promedios nacionales de los precios más habituales cobrados por 
                                                   las bananas en los mercados mayoristas de Birmingham y Londres.",style="color:black;text-align:justify"),
                                                 br(),
                                                 p("Se muestra Información como Paises:",style="color:black;text-align:justify"),
                                                 br(),
                                                 p("1. Ecuador ",br(),br(
                                                     "2. Costa Rica "),br(
                                                         "3. Colombia "),br(
                                                             "4. Filipinas: "),br(
                                                                 "5. Guatemala"),br(
                                                                     "Entre Otros"),style="color:black;text-align:left;background-color:white;padding:15px;border:1px solid black"),
                                                 br(),
                                                 p(),
                                                 width=8,style="background-color:lavender;border-radius: 10px"),
                                             br(),
                                             hr()
                                             ),
                                    br(),
                                    hr(),
                                    
                                    p(em("Realizado por:"),br("Jack Bedoya"),style="text-align:center; font-family: times")),
                            
                            tabItem(tabName = "dashboard3",
                                    fluidRow(column(width=2),
                                             column(tags$style(".fa-database {color:#E87722}"),
                                                    h3(p(em("Detalle del Precio por Banano por País"),style="color:black;text-align:center")),
                                                    width=8,style="background-color:lavender;border-radius: 10px")),
                                    br(),
                                    fluidRow(
                                        box(
                                            title = "Seleccionar Pais", width = 6, height = 150,solidHeader = TRUE, status = "primary",
                                            selectInput(inputId = "selectorLocal2",
                                                        label = "",
                                                        choices= Banano  %>% select(Pais)%>%  pull(Pais) %>% unique(),
                                                        selected  = c("Colombia","Ecuador","Costa Rica"), 
                                                        multiple = T)
                                        ),
                                        box(
                                            title = "Seleccione Año", width = 6,height = 150, solidHeader = TRUE,status = "primary",
                                            sliderInput("selectorPromotor2", "" ,min = min(Banano$Anio,na.rm = TRUE)  , max = max(Banano$Anio,na.rm = TRUE),
                                                            value = c(2018,2022))
                                        )),
                                    br(),
                                    fluidRow(
                                        box(
                                            title = "Dólares por Kilogramo de Banano", width = 12, height = 460,solidHeader = TRUE, status = "primary",
                                            plotOutput("covid")
                                        )),
                                    br(),
                                    fluidRow(
                                        box(
                                            title = "Paises Seleccionados", width = 12, height = 460,solidHeader = TRUE, status = "primary",
                                            column(width=1),
                                            column(plotOutput("covid2"),width=10),
                                            column(width=1)
                                        )),
                                    br(),
                                    fluidRow(
                                        hr(),
                                        h3(p(em("Base de Datos Utilizada "),icon("database",lib = "font-awesome"),style="color:black;text-align:center")),
                                        fluidRow(column(width = 1),
                                                 column(DT::dataTableOutput("Rdata_pais3"),
                                                        width = 10),
                                                 column(width = 1)),
                                        fluidRow(column(width = 1),
                                                 column(downloadButton("downloadData", "Download"),
                                                        width = 10),
                                                 column(width = 1))),
                                    hr(),
                                    p(em("Realizado por:"),br("Jack Bedoya"),style="text-align:center; font-family: times")),
                            tabItem(tabName = "dashboard4",
                                    fluidRow(
                                        column(width=2),
                                        column(tags$style(".fa-database {color:#E87722}"),
                                               h3(p(em("Fuente de Información"),style="color:black;text-align:center")),
                                               width=8,style="background-color:lavender;border-radius: 10px")),
                                    br(),
                                    
                                    fluidRow(column(width=2, icon("scroll","fa-5x"),align="center"),
                                             #fluidRow(column(width=2, img(src = "grupasa.png", height = 72, width = 72),align="center"),
                                             column(
                                                 p("Toda la infomración esta recolectada desde una sola fuente de información.
                                                   La cual cual fue revisada y analizada de manera exhaustiva.",style="color:black;text-align:justify"),
                                                 p(""),
                                                 p("Esta Pagina facilita sin numero de Informacion de varias ramas: GOV.UK",style="color:black;text-align:justify"),
                                                 p(""),
                                                 p("La Página web es:",style="color:black;text-align:justify"),
                                                 tags$a(href = "https://www.gov.uk/", "https://www.gov.uk/"),
                                                 p(""), width=8,style="background-color:lavender;border-radius: 10px")),
                                    br(),
                                    hr(),
                                    p(em("Realizado por:"),br("Jack Bedoya"),style="text-align:center; font-family: times"))
                        )
                        
                    )
                    
)

## 6- Creamos el Server
server <- function(input, output) {

## 7- Creamos las variables calculadas
    vTAS_filtrado <- reactive({
        
        Banano %>% filter(Anio %in% c(min(input$selectorPromotor2):max(input$selectorPromotor2)), Pais %in% input$selectorLocal2 ) %>% select(-1)
    })
    
    vTAS_filtrado2 <- reactive({

        worlds_jb %>% filter(Pais %in% input$selectorLocal2 )
    })
    
    output$Rdata_pais3 <- renderDT({
        
        vTAS_filtrado() %>% 
            datatable(options = list(scrollX=T))
        
    })
  
## 8- Creamos los resultados con las variables calculadas
    output$covid <- renderPlot({
        ggplot(vTAS_filtrado(), aes(x= Semanas, y = USD, group = Pais, colour =Pais)) +
            geom_line(linetype="solid", size=0.5) +
             geom_point()+
             geom_path()+
            labs(title = "",
                 x = "Semanas Registradas",
                 y = "$USD/KG",
                 caption = "Fuente: GOV.UK") +
            guides(colour = guide_legend(title=NULL))+
            theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="black", size=rel(1)))+
            theme(axis.title.y = element_text(face="bold", vjust=-0.5, colour="black", size=rel(1)))+
            theme(axis.text.x = element_text(size=rel(0.1),angle = 90))
    })
    
    
    output$covid2 <- renderPlot({
        ggplot(vTAS_filtrado2()) +
            geom_map(aes(map_id = id, fill=Pais), show.legend = TRUE,map = world_map) +
            geom_polygon(data = world_map, aes(x = long, y = lat, group = group), colour = 'black', fill = NA) +
            expand_limits(x = world_map$long, y = world_map$lat) +
            labs(title = "",
                 caption = "Fuente: GOV.UK") +
            theme(
                axis.line = element_blank(),
                axis.text = element_blank(),
                axis.title = element_blank(),
                axis.ticks = element_blank(),
                panel.background = element_rect(colour= "gray", size= 1))
    })

    output$downloadData <- downloadHandler(
        filename = function() {
            paste("Precios_Banano", ".xlsx", sep = "")
        },
        content = function(file) {
            write.xlsx(vTAS_filtrado(), file, row.names = TRUE)
        }
    )
    
}

## 7- Cerramos el Proyecto
shinyApp(ui, server)

Visualizacion Web

Una versión de lo presentadose lo visualiza en el siguiente Link: https://jack-bedoya.shinyapps.io/Banano_GPSA/