fathomson's avatar
fathomson
Advocate II
9 years ago

Schedule view

 

Description

A relatively simple visualization to show start-stop of events at locations. Can be roomscheduling but also a production process with specific states at a given time. Although it is only a few lines of R I've used it several times and think it is worth sharing!
  

Prerequisites (The sample .pbix files will not work without these prerequites completed)

1. Install R Engine

Power BI Desktop does not include, deploy or install the R engine. To run R scripts in Power BI Desktop, you must separately installR on your local computer. You can download and install R for free from many locations, including the Revolution Open download page, and the CRAN Repository.

 

2. Install the required R packages.

Download the R script attached to this message and run it to install all required packages on your local machine. 

 

Required R packages:

ggplot2


Tested on:

CRAN 3.3.1, MRO 3.3.0, powerbi.com

15 Replies

  • mike_honey's avatar
    mike_honey
    Memorable Member

    There doesnt appear to be any R packages attached to this topic?

    • fathomson's avatar
      fathomson
      Advocate II

      Hi Mike,

       

      The R code is inside the powerbi dashboard file. 

       

  • This is great, exactly what I was looking for. I am quite new tto R, but was wondering......using the below script:

     

    ## Show schedule of projects by start / end date
    #

    library(ggplot2) # Visualization

    # Convert timestamp to POSIXct. What do I do here to make the x-axis format to show yyyy/mm/dd? or alternatively mmm-yy?
    dataset$From<-as.POSIXct(dataset$From,format="%Y-%m-%dT%H:%M:%OS")
    dataset$To<-as.POSIXct(dataset$To,format="%Y-%m-%dT%H:%M:%OS")

    ggplot(dataset,aes(x=datetime_start, y=dataset$Room, color=Person)) +
    geom_segment(aes(x=From,xend=To,yend=dataset$Room),size=15) +
    scale_colour_discrete(guide=guide_legend(override.aes=list(size=10))) +
    ggtitle("Room reservations for building X") + xlab("") + ylab("") + theme_bw()

     

    Thanks again and keep up the good work!!

     

    Kind Regards, 

    Llewellyn

    • Anonymous's avatar
      Anonymous
      Not applicable

      PolymathConsult,

      Try adding a datetime scale similar to below:

      scale_x_datetime(breaks = date_breaks("1 month"), labels=date_format("%d/%m/%Y"))

       You may also want to turn the date on the X axis for easier reading

      theme(axis.text.x = element_text(angle = 90))

       

      P.S. You'll need to load library(scales) to use the scale_x_datetime function... 

  • boefraty's avatar
    boefraty
    Microsoft Employee

    Hi Frank,

    Thanks for your new R-showcases. They are very useful.  If you consider to convert some of your R-visuals to R-powered-custom visuals, out team will be happy to assist you. 

     

    The visibility of R-powered custom visuals is greater and it is not limited for R-users. 

  • Hey, I'm so green with R, I was wondering if you might be able to give me a head start. Literally, I started looking at it today after I saw your post.

     

    How would you adapt this to a production process? That's what I want to do.

    Say products "A" and "B" entering various different stages (1, 2, 3) of the development process.

     

    Any head start would be really appreciated.

     

    As a side note, it looks like your data model in PBI is really simple! I like that! I would totally build a simple table based off of referenced queries.

    And you're just using a few lines of R to extract that and create the visual. It seems very cool!

    • boefraty's avatar
      boefraty
      Microsoft Employee

      Hi jmpace

      Did you get any help with your project? Sorry for late response. 

      Please contact me if you still need any help with it. 

       

      The developer of this visual fathomson did an excelent job converting this R visual to custom visual. 

      Which is still available here. And I hope one day will be avaialble in AppSource.   BTW, please check if Gantt chart can be useful for you. 

       

        

  • Anonymous's avatar
    Anonymous
    Not applicable

    Good morning!

     

    Congrats for the great job. :-)

    It is very useful for me.

    One question: where is defined the variable datetime_start?

     

    ggplot(dataset,aes(x=datetime_start, y=dataset$Room, color=Person)) +
      geom_segment(aes(x=From,xend=To,yend=dataset$Room),size=15) +
      scale_colour_discrete(guide=guide_legend(override.aes=list(size=10))) +
    ggtitle("Room reservations for building X") + xlab("") + ylab("") + theme_bw()

     

    Thanks for your time! :-)

    • boefraty's avatar
      boefraty
      Microsoft Employee

      Hi Anonymous, 

      Sorry for delay in reponse. Do you still need help to your project? 

      To your question datetime_start is a typo in code. Luckily it was ignored by ggplot because aes is replaced. 

  • C_Houghton's avatar
    C_Houghton
    Frequent Visitor

    This is exactly what I'd like to use, but I want to define limits to ensure a whole day is shown, even if the schedule only has 1 item half an hour long. 

     

    Do you have any ideas on dynamically changing the scale? I'm currently using it with a Calendar visual allowing you to select days, which means it could be any day, so it needs a limit for x hours in a variable date :/

     

    Another possible option (not ideal at all) is to add a placeholder for every day that is 24 hours long!

    • boefraty's avatar
      boefraty
      Microsoft Employee

      Hi C_Houghton

       

      You certainly can use ggplot functionality to get the required feature. 

      BTW,  fathomson implmented R Custom Visual on the basis of this show case. 

      It is still available here

       

      As a quick and dirty "hack" to your problem you may try to add two zero-length resources at the beginning and the end of the day. 

       

       

      • C_Houghton's avatar
        C_Houghton
        Frequent Visitor

        Thanks for your reply! That would be absolutely perfect, but i'm getting errors:

         

        Feedback Type:
        Frown (Error)

        Timestamp:
        2017-10-23T07:56:28.6198256Z

        Local Time:
        2017-10-23T08:56:28.6198256+01:00

        Product Version:
        2.47.4766.801 (PBIDesktop) (x64)

        Release:
        June 2017

        IE Version:
        11.608.15063.0

        OS Version:
        Microsoft Windows NT 10.0.15063.0 (x64 en-GB)

        CLR Version:
        4.6.2. or later [Release Number = 460798]

        Workbook Package Info:
        1* - en-US, Query Groups: 0, fastCombine: Disabled, runBackgroundAnalysis: True.

        Peak Working Set:
        386 MB

        Private Memory:
        271 MB

        Peak Virtual Memory:
        33.8 GB

        Error Message:
        R script error.
        Loading required package: ggplot2
        Loading required package: grid
        Loading required package: gridExtra
        Warning message:
        package 'gridExtra' was built under R version 3.4.2
        Loading required package: wesanderson
        Warning message:
        package 'wesanderson' was built under R version 3.4.2
        Loading required package: RColorBrewer
        Loading required package: dplyr
        Warning messages:
        1: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
        there is no package called 'dplyr'
        2: In libraryRequireInstall("dplyr") :
        *** The package: 'dplyr' was not installed ***
        Error in `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
        factor level [2] is duplicated
        Calls: sortDataset -> factor
        Execution halted


        User ID:
        db15c5fa-a129-4ae0-ba08-f5149b97bbcb

        Session ID:
        89517680-55f3-4784-b47f-0655edbd950b

        Telemetry Enabled:
        True

        Model Default Mode:
        Import

        Snapshot Trace Logs:
        C:\Users\ch1\AppData\Local\Microsoft\Power BI Desktop\FrownSnapShot293130851.zip

        Performance Trace Logs:
        C:\Users\ch1\AppData\Local\Microsoft\Power BI Desktop\PerformanceTraces.zip

        Enabled Preview Features:
        PBI_Snowflake
        PBI_shapeMapVisualEnabled
        PBI_EnableReportTheme
        PBI_allowBiDiCrossFilterInDirectQuery
        PBI_pivotTableVisualEnabled
        PBI_numericSlicerEnabled
        PBI_daxTemplatesEnabled
        PBI_relativeDateSlicer
        CustomConnectors

        Disabled Preview Features:
        PBI_SpanishLinguisticsEnabled
        PBI_PbiServiceLiveConnect

        Disabled DirectQuery Options:
        PBI_DirectQuery_Unrestricted

        Cloud:
        GlobalCloud

        Time:
        Mon Oct 23 2017 08:55:49 GMT+0100 (GMT Summer Time)

        Client Error Code:
        ServiceErrorToClientError

        Error Details:
        R script error.
        Loading required package: ggplot2
        Loading required package: grid
        Loading required package: gridExtra
        Warning message:
        package 'gridExtra' was built under R version 3.4.2
        Loading required package: wesanderson
        Warning message:
        package 'wesanderson' was built under R version 3.4.2
        Loading required package: RColorBrewer
        Loading required package: dplyr
        Warning messages:
        1: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
        there is no package called 'dplyr'
        2: In libraryRequireInstall("dplyr") :
        *** The package: 'dplyr' was not installed ***
        Error in `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
        factor level [2] is duplicated
        Calls: sortDataset -> factor
        Execution halted


        Stack Trace:
        Microsoft.PowerBI.ExploreServiceCommon.ScriptHandlerException: R script error.
        Loading required package: ggplot2
        Loading required package: grid
        Loading required package: gridExtra
        Warning message:
        package 'gridExtra' was built under R version 3.4.2
        Loading required package: wesanderson
        Warning message:
        package 'wesanderson' was built under R version 3.4.2
        Loading required package: RColorBrewer
        Loading required package: dplyr
        Warning messages:
        1: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, :
        there is no package called 'dplyr'
        2: In libraryRequireInstall("dplyr") :
        *** The package: 'dplyr' was not installed ***
        Error in `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, :
        factor level [2] is duplicated
        Calls: sortDataset -> factor
        Execution halted

         

        Any insights off the bat? Or I can follow it up with the creator.

         

        Thanks again