Panama Power BI User Group

Please login or click SIGN UP FOR FREE to create your PowerPlatformUG account to join this user group.

R, PowerBI, Dynamic Dashboards

  • 1.  R, PowerBI, Dynamic Dashboards

    Posted Mar 16, 2021 08:53 PM

    Gráficos Dinámicos con R y Power BI


    Por Gabriel Gómez

    Datos: Tipos de acuerdos Nupciales y Divorcios en la República de Panamá 2014-2018.
    Fuente: INEC(Instituto Nacional de Estadística y Censo)

     

    En ocasiones anteriores he compartido como diseñar cuadros de mandos dinámicos utilizando Bookmarks y la función SelectValue (Dax).  Esa información será de complemento a la que desarrollaré en este artículo para que puedan crear cuadros de mandos que aporten gran capacidad de interacción a los usuarios.

    Con esta guía usted podrá crear espacios que le permitan a los tomadores de decisiones seleccionar el visual de su preferencia y combinarlo con la medida y atributo que le aporte más valor a sus análisis. Para ellos nos apoyaremos en la herramienta R y Power BI.

    Para lograr lo que he planteado previamente, usted deberá seguir los siguientes pasos:

     

    Paso # 1:  Enlazar la fuente de datos (Archivo .csv) con power BI.  Se agregará la tabla "Matrimonios".

    Paso # 2: Crear una tabla que contenga el nombre de los visuales que tendremos disponibles.

    Medida =
    DATATABLE (
        "Medida"STRING,
        {
            "LineChart" },
            "BarChart" },
            "ScatterPlot" }
        }
    )

    Paso # 3: Creamos una medida en la tabla "Matrimonio" en el que se almacenará el valor que seleccionemos en el paso # 2. Por defecto nuestro valor será "BarChart"

    TipodeGrafico =
    IF (
        SELECTEDVALUE ( 'Medida'[Medida] ) = "",
        "BarChart",
        SELECTEDVALUE ( 'Medida'[Medida] )
    )

    Paso # 4: Agregar el visual de R al área de trabajo de Power BI y también agregar las columnas (TipoAcuerdo, Total, Year, Medida[Medida]) y la medida creada en el paso 3 "TipodeGrafico".  La razón por la que agregamos esta medida es porque no existe relación establecida entre la tabla Medida(Paso 2) y la tabla "Matrimonios" por eso deberemos agregar las columnas y medida previamente indicada.

     

    Paso # 5: Pegar el siguiente código que he desarrollado en el visual de R agregado en el paso anterior:

    # Cargamos las librerías a las cuales hará referencia nuestro código.
    library(tidyverse)
    library(ggplot2)
    library(dplyr)
     
    # Asignamos el set de datos (por defecto se llama dataset) a nuestra variable cuyo nombre será VDin(Visual Dinámico)
     
    VDin <- dataset
     
    # Debido a que la tabla de datos "Matrimonios" contiene múltiples observaciones, necesitaremos limitar el valor en la variable "Medida" a un solo registro y luego convertirlo a vector para que lo entienda nuestro código.
       
    a <- first(midwest$Medida)
    visualType <- as.vector(a)
     
    # Ahora, hemos diseñado un visual dependiendo del valor seleccionado. Nos apoyamos en la función switch para tal propósito. Almacenamos el visual diseñado en la función resultado.
    resultado = switch(
        visualType,
        "BarChart"= ggplot(data=midwest, aes(x=Year, y=Total, fill=TipoAcuerdo)) +
          geom_bar(stat="identity", position=position_dodge()) +
          geom_text(aes(label=Total), vjust=1.6, color="white",
            position = position_dodge(0.9), size=3.5)+
          scale_fill_manual(values=c("#2471A3", "#F39C12", "#229954")) +
          theme_minimal()
          ,
        "LineChart" = midwest %>%
          ggplot( aes(x=Year, y=Total, group=TipoAcuerdo, color=TipoAcuerdo)) +
          geom_line(size = 1,linetype=2) +
          geom_text(aes(label=Total, vjust=-0.5)) +
          geom_point(shape=21, color="black", fill="#00556C", size=3) +
            scale_color_manual(values=c("#2471A3", "#F39C12", "#229954")) +
       
          ylab("Total") +
          xlab("Año")
          ,
        "ScatterPlot" = ggplot(midwest, aes(x=Year, y=Total )) +
          geom_point(aes(col=TipoAcuerdo, size=Total)) +
          geom_text(aes(label=Total, vjust=-0.5)) +
          labs(
               y="Población",
               x="Año"
               ) +
          scale_color_manual(values=c("#2471A3", "#F39C12", "#229954"))
      )
    plot(result)

     

     

    Paso # 6:  Agregar un Slicer o visual de filtro al área de trabajo y asignarle la columna Medida[Medida].  Esto es con el propósito de filtrar el visual que deseamos.

     

    Los visuales disponibles son los siguientes(usted puede modificar la configuración para mostrar colores deseados, tamaños de fuentes, etc):

     

    Figura # 1: Visual BarChart Diseñado con R e Integrado en Power BI

    Figura # 2: Visual LineChart Diseñado con R e Integrado en Power BI
     
    Figura # 3: Visual ScatterPlot Diseñado con R e Integrado en Power BI

     















    Es importante mencionar que he seleccionado 3 de los visuales más comunes que puedan existir tanto en Power BI como en R pero usted puede agregar el nivel de complejidad que desee en los visuales que diseñe y este artículo es una referencia de que podemos aportar la capacidad dinámica a nuestros cuadros de mando. 

    Ahora ¿Qué pasaría si además de tener visuales dinámicos, también los fueran nuestras medidas y columnas a incluir?

    Ya hemos escrito acerca de como hacer que nuestras medidas sean dinámicas, ahora les toca combinar los conocimientos y que el conocimiento se convierta en arte.



    ------------------------------
    Gabriel Gómez
    Business Analysis Sr. Advisor
    Panamá
    62354955
    ------------------------------