Data Smoothing with Splines

Moderator
11420 Views
Highlighted
Moderator
Posts: 17
Registered: ‎09-29-2015

Data Smoothing with Splines

[ Edited ]

approval rating.JPG

Description

Smoothing helps you to better visualize and understand noisy data

 

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:

graphins, spline, scales


Tested on:

CRAN 3.3.1, MRO 3.3.0, powerbi.com

 

Legal Disclaimers:

Terms of Service and Third Party Programs.

 

Attachment
Attachment
Regular Visitor
Posts: 47
Registered: ‎07-29-2015

Re: Data Smoothing with Splines

We love this visual.  How should the script read if my dates are formatted as mm/dd/yyyy?

 

Thanks

Moderator
Posts: 90
Registered: ‎08-10-2016

Re: Data Smoothing with Splines

Hi, sorry for the delay in reply. 

The X column is of type "numeric". You can convert "date" type to "numeric" in Power Query. Next you need to take care of X-axis ticks labels, to be formatted as you want. 

I did something similar in 
https://community.powerbi.com/t5/R-Script-Showcase/ARIMA-forecasting/m-p/124237

Please have a look at the R code. If you still have trouble with it, you are welcome to send me the PBIX 

 

Regular Visitor
Posts: 22
Registered: ‎12-07-2017

Re: Data Smoothing with Splines

Been looking at this visualization lately as I need to plot some datapoints and need to add regression lines. I'm plotting revenue/sales per day, and using the date as the category/legend. However, I need one line for each of the days, instead of one for all the data points.

How much work am I looking at doing smoething like this in R? 

Moderator
Posts: 90
Registered: ‎08-10-2016

Re: Data Smoothing with Splines

Hi, 

This is quite simple to achieve if you have basic expertise in R. 

I'd also recommend you to look at R Custom Visual  "Spline" it has regression lines 

You can use it as a starting point. 

 

Regular Visitor
Posts: 22
Registered: ‎12-07-2017

Re: Data Smoothing with Splines

I actually wrote a script that kinda fixed what I was trying to do, it's not pretty, but it works. Problem I got now is that I'm trying to make a custom visual out of it so I can get the highlighting features you used working. I assume it was plotly? I got multiple regression lines working, but plotly isn't playing along. Tried the RADACAD tutorial a few times, but I'm guessing my code is written in a way that it isn't a simple copy paste job anymore.

library(ggplot2)
p = qplot(1:10, (1:10)^3)
g = ggplot(dataset, aes(x=Price, y=Production, color = Date))+
geom_point() +
theme(axis.text.x = element_text(size=14),
axis.text.y = element_text(size=14),
axis.title.x = element_text(size=16),
axis.title.y = element_text(size=16),
panel.background = element_rect(fill = "white",
colour = "777777",
size = 0.4, linetype = "solid"),
panel.grid.major = element_line(size = 0.08, linetype = 'dashed',
colour = "777777"),
panel.grid.minor = element_line(size = 0.08, linetype = 'dashed',
colour = "777777")) +
theme(legend.position="bottom") +
ylab("Production") +
xlab("Price") +
stat_smooth(method = "lm", formula = y ~ poly(x,2), size = 1, se = FALSE)
g$respect = TRUE
library(grid)
grid.draw(g)

Trying to get it working in this template.

############### Library Declarations ###############
libraryRequireInstall("ggplot2");
libraryRequireInstall("plotly")
####################################################

################### Actual code ####################
g = qplot(Values$Data, data = Values, fill = Values$Type, main = Sys.time());
####################################################

############# Create and save widget ###############
p = ggplotly(g);
internalSaveWidget(p, 'out.html');




https://community.powerbi.com/t5/Developer/Converting-power-bi-R-script-visual-to-custom-R-visual/m-...