Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
JVidal
Helper I
Helper I

[SOLVED] R plotly custom visualization margin padding

Good morning all, 

 

I am creating a custom visualization with R with the plotly package.

 

The issue I am having is with the margin padding the custom visualization is adding to the output. I have set up the plotly chart to use 0 margin and padding, but the PowerBI visualization is adding padding I am trying to get rid off. Be aware in RStudio the plotly chart is with 0 margin, so I am positive the chart itself is produced correctly.

 

I have gone through the json files for the visualization trying to figure out an option I could find in the files, but I haven't been successful.

 

Is it possible to remove the padding the custom visuals are adding to the plotly chart?

 

Thank you

 

Kind regards,

 

1 ACCEPTED SOLUTION
JVidal
Helper I
Helper I

Good morning, 

 

I have finally managed to get rid of the extra padding introduced in the visualization. I appears the bug is with htmlWidgets, that introduces padding into the html file.

 

A simple R function can get rid of the padding, such as the one below:

ReadFullFileReplaceString <- function(fnameIn, fnameOut, sourceString,targetString) {
  if(!file.exists(fnameIn))
    return(NULL)
  tx  <- readLines(fnameIn,encoding = "UTF-8")
  tx2  <- gsub(pattern = sourceString, replace = targetString, x = tx)
  writeLines(tx2, con = fnameOut)
}

The calling the function like so:

ReadFullFileReplaceString('out.html', 'out.html', ',"padding":[0-9]*,', ',"padding":0,')

Credit goes to MS, as the solution was found in one of their R visualizations, PowerBI-visuals-forcasting-exp

in their script.r file: https://github.com/microsoft/PowerBI-visuals-forcasting-exp/blob/master/script.r

 

 

View solution in original post

7 REPLIES 7
belindajbailey
New Member

I am unable to get this to work and really need to get around this. I am not a developer or at least I am only just starting out so any help would be gratefully received. If you can point me in the direction of where to get the help that would be amazing. 

JVidal
Helper I
Helper I

Good morning, 

 

I have finally managed to get rid of the extra padding introduced in the visualization. I appears the bug is with htmlWidgets, that introduces padding into the html file.

 

A simple R function can get rid of the padding, such as the one below:

ReadFullFileReplaceString <- function(fnameIn, fnameOut, sourceString,targetString) {
  if(!file.exists(fnameIn))
    return(NULL)
  tx  <- readLines(fnameIn,encoding = "UTF-8")
  tx2  <- gsub(pattern = sourceString, replace = targetString, x = tx)
  writeLines(tx2, con = fnameOut)
}

The calling the function like so:

ReadFullFileReplaceString('out.html', 'out.html', ',"padding":[0-9]*,', ',"padding":0,')

Credit goes to MS, as the solution was found in one of their R visualizations, PowerBI-visuals-forcasting-exp

in their script.r file: https://github.com/microsoft/PowerBI-visuals-forcasting-exp/blob/master/script.r

 

 

Anonymous
Not applicable

Hi @JVidal ,

 

I am also trying to get rid off the extra padding of the custom visual. The R function you provided before, should this be included in script.r file? If so, does it comes before the "g = ggplotly(p); internalSaveWidget(g, 'out.html'); " part or after it.

 

Thanks in advance.

Ragards

Anonymous
Not applicable

Hi JNahar,

 

Yes, you need to paste/run the above code in the script.r file and for second part of your question, please see the previous discussions in the post

 

Cheers

Anonymous
Not applicable

@JVidal ,

I'm new to R script, where would I add your code in my script to remove the padding?

Below is my R script example;

 

source('./r_files/flatten_HTML.r')

libraryRequireInstall("ggplot2");
libraryRequireInstall("plotly")

df <- data.frame(RunID = Values$RunID, CLWT = Values$xCLw, PCLF = Values$xPCLFw) 

g = ggplot(df, aes(x=PCLF, y=CLWT, color= as.factor(RunID)))+
  geom_point(size=2)+
  labs(title="Pan Polar", x = "% CLF",y = "CL")+
  theme(text=element_text(size=8),
        plot.margin = unit(c(0.1,1,0.1,0.1),"cm"))

p = ggplotly(g) %>% config(displaylogo = FALSE, 
                           modeBarButtonsToRemove = list
                           ('toImage',
                             'zoomIn2d',
                             'zoomOut2d',
                             'lasso2d',
                             'hoverCompareCartesian',
                             'select2d'));
internalSaveWidget(p, 'out.html');
Anonymous
Not applicable

Hi,

You need to paste the @JVidal's script after 

internalSaveWidget(p, 'out.html')

That should do it.

Many thanks to @JVidal and the script works well.

 

TeigeGao
Solution Sage
Solution Sage

Hi @JVidal ,

In this scenario, I would suggest you opening an idea in the idea forum at https://ideas.powerbi.com/forums/265200-power-bi-ideas

Best Regards,

Teige

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.