Forum Discussion
[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,
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
7 Replies
- JVidalHelper 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
- AnonymousNot 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');- AnonymousNot applicable
- AnonymousNot 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
- AnonymousNot 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
- TeigeGaoSolution 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
- belindajbaileyNew 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.