Forum Discussion

tglah's avatar
tglah
Frequent Visitor
9 years ago

R Control Chart

HelloPBI Community,

 

I havent found too much info on R Control Charts in this forum and am wondering if there is anyone out there that could copy&paste one?

 

 

Cheers

8 Replies

  • TedPattison's avatar
    TedPattison
    Microsoft Employee

    Here's is an example of creating a histogram with a density distribution line.

     

    hist(dataset$Age, 
         main = "Customer Count by Age",
         ylab="Customer Count", 
         xlab="Customer Age",
         xlim = c(18, 100),
         border="black",
         breaks=20,
         col=c("lightyellow", "lightblue"), 
         las=1,
         probability = TRUE
    )
    
    lines(density(dataset$Age),lty="dotdash", lwd=4, col="red")

    Here's an example of creating a barblot

     

    barplot(dataset$'Sales Revenue',        
            names.arg = dataset$'Age Group', 
            main = "Sales Revenue by Customer Age Group",
            col = c("red","yellow","orange","blue", "green")
    )
    
    minValue <- 0
    maxValue <- max(as.vector(dataset$'Sales Revenue'))
    yTicks <- seq(from=minValue, to = maxValue, length.out = 10)
    yTicks <- pretty(yTicks)
    yTickLabels <- paste("$",format(yTicks/1000, , big.mark=","), "K",sep="")
    axis(2, at=yTicks, labels = yTickLabels, lty = 1, las=1, cex.axis=0.7 )

    Of course, these are simple examples using the built-in R graphics functionality. You can also use a richer graphics package such as lattice or ggplot2 to create some really detailed charts and graphs.

     

    Is this what you are looking for?

    • tglah's avatar
      tglah
      Frequent Visitor

      Thanks Ted, this is along the same lines, but I am interested more in an "xbar" chart and also looking for a simple R script to create a Pareto chart for my customers.

       

      Thank you for the scripts for the Histogram and Bar Plot, I will also be adding this to my arsenal.

      • MawashiKid's avatar
        MawashiKid
        Resolver II

        RE:  also looking for a simple R script to create a Pareto chart

        In order to use any chart -that is part of a R Visualization package library - it's logical to first make sure it's installed.

        install.packages('<yourPackage>')


        Now considering the huge amount of R package visualization libraries, there may be a few ways to reproduce what you want. Note that I don't consider myself an R guru at this stage, still here's a couple of basic samples.

        qcc library...



        library(qcc)
            defect <- c(80, 27, 66, 94, 33)
            names(defect) <- c("price code", "schedule date", "supplier code", "contact num.", "part num.")
            pareto.chart(defect, ylab = "Error frequency", col=heat.colors(length(defect)))

        ggplot2 library...

        library(ggplot2)
        
        counts  <- c(80, 27, 66, 94, 33)
        defects <- c("price code", "schedule date", "supplier code", "contact num.", "part num.")
        
        dat <- data.frame(
          count = counts,
          defect = defects,
          stringsAsFactors=FALSE
        )
        
        dat <- dat[order(dat$count, decreasing=TRUE), ]
        dat$defect <- factor(dat$defect, levels=dat$defect)
        dat$**bleep** <- cumsum(dat$count)
        dat
        
        ggplot(dat, aes(x=defect)) +
          geom_bar(aes(y=count), fill="blue", stat="identity") +
          geom_point(aes(y=**bleep**)) +
          geom_path(aes(y=**bleep**, group=1))


        I haven't played much with x-Bar chart though I'll check if I can find something... Anyway hope this helps


  • RE : xBarChart

    In true life scenario, I'd say the following data would probably be obtained as a result
    of fancy mathemathic algorithm formula... though I'll leave that to Math PhDs...:smileyhappy:
    So for for simplicity I just added a list of subgroup manually...

    So here we go...

    #declare qcc library:
    
    library(qcc)
    
    # Load a mock list of 10 subgroup data manually:
    
    sg1 <- c(1.397742,1.399917,1.278918,1.279828) # Fill in subgroup 1 data!
    sg2 <- c(1.283877,1.307215,1.341566,1.396107) # Fill in subgroup 2 data!
    sg3 <- c(1.313634,1.278839,1.242498,1.331201) # Fill in subgroup 3 data!
    sg4 <- c(1.245943,1.303432,1.390168,1.298949) # Fill in subgroup 4 data!
    sg5 <- c(1.188624,1.226905,1.217450,1.284127) # Fill in subgroup 5 data!
    sg6 <- c(1.287875,1.283185,1.234186,1.314055) # Fill in subgroup 6 data!
    sg7 <- c(1.276711,1.284376,1.305309,1.249184) # Fill in subgroup 7 data!
    sg8 <- c(1.312219,1.297509,1.272367,1.371223) # Fill in subgroup 8 data!
    sg9 <- c(1.378350,1.312981,1.381944,1.268875) # Fill in subgroup 9 data!
    sg10 <- c(1.332196,1.268824,1.299608,1.329053) # Fill in subgroup 10 data!
    
    # Include those subgroups into a my.data mock list through rbind
    
    my.data <- rbind(sg1,sg2,sg3,sg4,sg5,sg6,sg7,sg8,sg9,sg10)
    
    # Draw the R Chart and calculate relevant metrics
    
    q1 <- qcc(my.data, type="R", nsigmas=3)

    which should generate similar R chart:



    then add following to ldraw the X-BAR chart...

    # Draw the X-Bar Chart and calculate relevant metrics
    q2 <- qcc(my.data, type="xbar", nsigmas=3)

    which should generate following X-Bar Chart:


    Finally:

    # Establish the LSL and USL as set by customer specs, then
    # draw the process capability chart and calculate metrics:
    
    lsl <- 1.31 # Fill in a mock LSL here!
    usl <- 1.32 # Fill in a mock USL here!
    
    process.capability(q2, spec.limits=c(lsl,usl))

    which should end up with following:


    Hope this helps...

    • tglah's avatar
      tglah
      Frequent Visitor

      Thank you for all of this information! I am going to try and take some time this weekend to put into play your examples.

       

      Much appreciated! Ill reply back with any progress I can make.

       

      Cheers.

      • tglah's avatar
        tglah
        Frequent Visitor

        I have been able to create the R and XBar charts in PowerBI R Visuals, but still need some adjustments as it doesnt look right to me (data not displaying as expected).

         

        library(qcc)

        months<- c("Jan", "Feb", "Mar", "Apr","May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec")

        qcc(dataset, type="R", nsigmas=1, labels=months, xlab= "Month", ylab = "Service Level %", title = "Phone Call SVL", digits=3)

         

         

        Any idea how to get the Y axis to show as percentages? My data is in percentages as you can see when selecting a simple Line Chart from the PowerBI Visuals.

         

         

        Thanks for all your assistance!