Why is the self-contained htmlwidget so much bigger than the htmlwidgets.org example page?
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
- when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget
# 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
add a comment |
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
- when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget
# 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
was there anything else you need added to the answer?
– zacdav
Jan 14 at 2:56
add a comment |
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
- when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget
# 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
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
- when generating a self-contained html widget, I'm getting a ~3MB page that contains only the widget
# 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
r htmlwidgets
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
add a comment |
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
add a comment |
1 Answer
1
active
oldest
votes
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.
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.
1
I think you're right. I'm not really sure why I havent' thought of that... Thanks!
– 7hibault
Jan 15 at 11:09
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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.
1
I think you're right. I'm not really sure why I havent' thought of that... Thanks!
– 7hibault
Jan 15 at 11:09
add a comment |
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.
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.
1
I think you're right. I'm not really sure why I havent' thought of that... Thanks!
– 7hibault
Jan 15 at 11:09
add a comment |
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.
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.
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.
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.
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
was there anything else you need added to the answer?
– zacdav
Jan 14 at 2:56