Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page?












1















Comparing the size of the html widgets example page with the size of a self-contained html widget:




  • when inspecting the example page, I'm getting a total of 717KB for the entire page


htmlwidgets page load perf




  • when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget


htmlwidgets save perf



# Code to generate the html widget
library(ggplot2)
library(plotly)
library(htmlwidgets)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
geom_bar(position = "dodge")
p <- ggplotly(p)
htmlwidgets::saveWidget(p, "path/to/my/widget.html", selfcontained = TRUE)


I'm trying to serve htmlwidgets to a web app over an HTTP API, so the size of these widgets is a concern. Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page? Can I do something to change that?



Note: I'm considering generating a non-self-contained html page, splitting the page to get the data, and serving the *.min.js files but the aggregated js files still add up to a few MB.










share|improve this question

























  • was there anything else you need added to the answer?

    – zacdav
    Jan 14 at 2:56
















1















Comparing the size of the html widgets example page with the size of a self-contained html widget:




  • when inspecting the example page, I'm getting a total of 717KB for the entire page


htmlwidgets page load perf




  • when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget


htmlwidgets save perf



# Code to generate the html widget
library(ggplot2)
library(plotly)
library(htmlwidgets)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
geom_bar(position = "dodge")
p <- ggplotly(p)
htmlwidgets::saveWidget(p, "path/to/my/widget.html", selfcontained = TRUE)


I'm trying to serve htmlwidgets to a web app over an HTTP API, so the size of these widgets is a concern. Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page? Can I do something to change that?



Note: I'm considering generating a non-self-contained html page, splitting the page to get the data, and serving the *.min.js files but the aggregated js files still add up to a few MB.










share|improve this question

























  • was there anything else you need added to the answer?

    – zacdav
    Jan 14 at 2:56














1












1








1








Comparing the size of the html widgets example page with the size of a self-contained html widget:




  • when inspecting the example page, I'm getting a total of 717KB for the entire page


htmlwidgets page load perf




  • when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget


htmlwidgets save perf



# Code to generate the html widget
library(ggplot2)
library(plotly)
library(htmlwidgets)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
geom_bar(position = "dodge")
p <- ggplotly(p)
htmlwidgets::saveWidget(p, "path/to/my/widget.html", selfcontained = TRUE)


I'm trying to serve htmlwidgets to a web app over an HTTP API, so the size of these widgets is a concern. Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page? Can I do something to change that?



Note: I'm considering generating a non-self-contained html page, splitting the page to get the data, and serving the *.min.js files but the aggregated js files still add up to a few MB.










share|improve this question
















Comparing the size of the html widgets example page with the size of a self-contained html widget:




  • when inspecting the example page, I'm getting a total of 717KB for the entire page


htmlwidgets page load perf




  • when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget


htmlwidgets save perf



# Code to generate the html widget
library(ggplot2)
library(plotly)
library(htmlwidgets)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
geom_bar(position = "dodge")
p <- ggplotly(p)
htmlwidgets::saveWidget(p, "path/to/my/widget.html", selfcontained = TRUE)


I'm trying to serve htmlwidgets to a web app over an HTTP API, so the size of these widgets is a concern. Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page? Can I do something to change that?



Note: I'm considering generating a non-self-contained html page, splitting the page to get the data, and serving the *.min.js files but the aggregated js files still add up to a few MB.







r htmlwidgets






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 10 at 14:42









AmerllicA

1




1










asked Nov 20 '18 at 17:11









7hibault7hibault

1,00911023




1,00911023













  • was there anything else you need added to the answer?

    – zacdav
    Jan 14 at 2:56



















  • was there anything else you need added to the answer?

    – zacdav
    Jan 14 at 2:56

















was there anything else you need added to the answer?

– zacdav
Jan 14 at 2:56





was there anything else you need added to the answer?

– zacdav
Jan 14 at 2:56












1 Answer
1






active

oldest

votes


















3





+500









The numbers you are seeing when inspecting are the lower because the files are compressed using gzip compression, which is the deflated once the data arrives.



inspect files gzip



I've run your example and the biggest offender for data size seems to be plotly-latest.min.js, which on disk occupies ~2.8 MB of storage.



To validate this, you can download the version from the example link you provided and it will occupy ~1.7 MB of storage. This is not the same, however the versions I'm seeing locally generated and R on on the example webpage are many version apart (Example:plotly.js v1.16.3, My R: v1.39.2), so it's likely attributed to plotly developing quite a lot in the what seems to be 2 year gap between versions (files have copyright date ranges, maximums are 2016 and 2018).



As far as trying to reduce the burden of file size, my best guess is that your HTTP API you are going to use can offer the same gzip encoding. There is no other way to transfer less data unless you can trim un-needed files as a post-process, determining those would be an exploratory process.






share|improve this answer



















  • 1





    I think you're right. I'm not really sure why I havent' thought of that... Thanks!

    – 7hibault
    Jan 15 at 11:09











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398119%2fwhy-is-the-self-contained-htmlwidget-so-much-bigger-than-the-htmlwidgets-org-exa%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3





+500









The numbers you are seeing when inspecting are the lower because the files are compressed using gzip compression, which is the deflated once the data arrives.



inspect files gzip



I've run your example and the biggest offender for data size seems to be plotly-latest.min.js, which on disk occupies ~2.8 MB of storage.



To validate this, you can download the version from the example link you provided and it will occupy ~1.7 MB of storage. This is not the same, however the versions I'm seeing locally generated and R on on the example webpage are many version apart (Example:plotly.js v1.16.3, My R: v1.39.2), so it's likely attributed to plotly developing quite a lot in the what seems to be 2 year gap between versions (files have copyright date ranges, maximums are 2016 and 2018).



As far as trying to reduce the burden of file size, my best guess is that your HTTP API you are going to use can offer the same gzip encoding. There is no other way to transfer less data unless you can trim un-needed files as a post-process, determining those would be an exploratory process.






share|improve this answer



















  • 1





    I think you're right. I'm not really sure why I havent' thought of that... Thanks!

    – 7hibault
    Jan 15 at 11:09
















3





+500









The numbers you are seeing when inspecting are the lower because the files are compressed using gzip compression, which is the deflated once the data arrives.



inspect files gzip



I've run your example and the biggest offender for data size seems to be plotly-latest.min.js, which on disk occupies ~2.8 MB of storage.



To validate this, you can download the version from the example link you provided and it will occupy ~1.7 MB of storage. This is not the same, however the versions I'm seeing locally generated and R on on the example webpage are many version apart (Example:plotly.js v1.16.3, My R: v1.39.2), so it's likely attributed to plotly developing quite a lot in the what seems to be 2 year gap between versions (files have copyright date ranges, maximums are 2016 and 2018).



As far as trying to reduce the burden of file size, my best guess is that your HTTP API you are going to use can offer the same gzip encoding. There is no other way to transfer less data unless you can trim un-needed files as a post-process, determining those would be an exploratory process.






share|improve this answer



















  • 1





    I think you're right. I'm not really sure why I havent' thought of that... Thanks!

    – 7hibault
    Jan 15 at 11:09














3





+500







3





+500



3




+500





The numbers you are seeing when inspecting are the lower because the files are compressed using gzip compression, which is the deflated once the data arrives.



inspect files gzip



I've run your example and the biggest offender for data size seems to be plotly-latest.min.js, which on disk occupies ~2.8 MB of storage.



To validate this, you can download the version from the example link you provided and it will occupy ~1.7 MB of storage. This is not the same, however the versions I'm seeing locally generated and R on on the example webpage are many version apart (Example:plotly.js v1.16.3, My R: v1.39.2), so it's likely attributed to plotly developing quite a lot in the what seems to be 2 year gap between versions (files have copyright date ranges, maximums are 2016 and 2018).



As far as trying to reduce the burden of file size, my best guess is that your HTTP API you are going to use can offer the same gzip encoding. There is no other way to transfer less data unless you can trim un-needed files as a post-process, determining those would be an exploratory process.






share|improve this answer













The numbers you are seeing when inspecting are the lower because the files are compressed using gzip compression, which is the deflated once the data arrives.



inspect files gzip



I've run your example and the biggest offender for data size seems to be plotly-latest.min.js, which on disk occupies ~2.8 MB of storage.



To validate this, you can download the version from the example link you provided and it will occupy ~1.7 MB of storage. This is not the same, however the versions I'm seeing locally generated and R on on the example webpage are many version apart (Example:plotly.js v1.16.3, My R: v1.39.2), so it's likely attributed to plotly developing quite a lot in the what seems to be 2 year gap between versions (files have copyright date ranges, maximums are 2016 and 2018).



As far as trying to reduce the burden of file size, my best guess is that your HTTP API you are going to use can offer the same gzip encoding. There is no other way to transfer less data unless you can trim un-needed files as a post-process, determining those would be an exploratory process.







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 10 at 9:34









zacdavzacdav

3,4371828




3,4371828








  • 1





    I think you're right. I'm not really sure why I havent' thought of that... Thanks!

    – 7hibault
    Jan 15 at 11:09














  • 1





    I think you're right. I'm not really sure why I havent' thought of that... Thanks!

    – 7hibault
    Jan 15 at 11:09








1




1





I think you're right. I'm not really sure why I havent' thought of that... Thanks!

– 7hibault
Jan 15 at 11:09





I think you're right. I'm not really sure why I havent' thought of that... Thanks!

– 7hibault
Jan 15 at 11:09


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398119%2fwhy-is-the-self-contained-htmlwidget-so-much-bigger-than-the-htmlwidgets-org-exa%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

Npm cannot find a required file even through it is in the searched directory