Is there an efficient way to display time chart in dc.js with date range data?
I am trying to create a timechart to show the number of rooms occupied in a different scenarios using dc.js. To reduce data transmission, my room occupancy data is represented by discrete start and end times.
[{"room": "1", "start":"10/13/2018 08:10", "end":"10/18/2018 17:43"}, {"room":"2", "start":"10/15/2018 12:51", "end":"10/24/2018 19:17"}, {"room":"3", "start":"10/11/2018 23:09", "end":"11/01/2018 11:44"}]
All the examples I have seen have discrete event times - is there a better way to show date ranges, or manipulate the group/dimension to provide counts/time?
dc.js data-manipulation date-range
add a comment |
I am trying to create a timechart to show the number of rooms occupied in a different scenarios using dc.js. To reduce data transmission, my room occupancy data is represented by discrete start and end times.
[{"room": "1", "start":"10/13/2018 08:10", "end":"10/18/2018 17:43"}, {"room":"2", "start":"10/15/2018 12:51", "end":"10/24/2018 19:17"}, {"room":"3", "start":"10/11/2018 23:09", "end":"11/01/2018 11:44"}]
All the examples I have seen have discrete event times - is there a better way to show date ranges, or manipulate the group/dimension to provide counts/time?
dc.js data-manipulation date-range
add a comment |
I am trying to create a timechart to show the number of rooms occupied in a different scenarios using dc.js. To reduce data transmission, my room occupancy data is represented by discrete start and end times.
[{"room": "1", "start":"10/13/2018 08:10", "end":"10/18/2018 17:43"}, {"room":"2", "start":"10/15/2018 12:51", "end":"10/24/2018 19:17"}, {"room":"3", "start":"10/11/2018 23:09", "end":"11/01/2018 11:44"}]
All the examples I have seen have discrete event times - is there a better way to show date ranges, or manipulate the group/dimension to provide counts/time?
dc.js data-manipulation date-range
I am trying to create a timechart to show the number of rooms occupied in a different scenarios using dc.js. To reduce data transmission, my room occupancy data is represented by discrete start and end times.
[{"room": "1", "start":"10/13/2018 08:10", "end":"10/18/2018 17:43"}, {"room":"2", "start":"10/15/2018 12:51", "end":"10/24/2018 19:17"}, {"room":"3", "start":"10/11/2018 23:09", "end":"11/01/2018 11:44"}]
All the examples I have seen have discrete event times - is there a better way to show date ranges, or manipulate the group/dimension to provide counts/time?
dc.js data-manipulation date-range
dc.js data-manipulation date-range
edited Nov 25 '18 at 19:28
Jernigan
asked Nov 25 '18 at 19:20
JerniganJernigan
63
63
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
I assume you want to aggregate over each time interval by counting the number of occupancies whose intervals intersect with that interval.
The reason you haven't seen too many examples is that it requires a specialized data structure called an interval tree to do it efficiently.
Some time ago I created an example using interval trees. It uses an interval tree library by Mikola Lysenko.
To illustrate how different this kind of filtering is, this chart will filter itself, i.e. its own bars will change as you brush over it. This behavior is different from most other dc.js/crossfilter charts - notice how many of the other bars outside of the range remain when you brush, because there are rows whose time intervals intersect both the brush and that bar's interval.
If you want the normal "don't filter yourself" behavior you can change
projectsPerMonthTree = ndx.groupAll().reduce(
to
projectsPerMonthTree = intervalDimension.groupAll().reduce(
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%2f53471014%2fis-there-an-efficient-way-to-display-time-chart-in-dc-js-with-date-range-data%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
I assume you want to aggregate over each time interval by counting the number of occupancies whose intervals intersect with that interval.
The reason you haven't seen too many examples is that it requires a specialized data structure called an interval tree to do it efficiently.
Some time ago I created an example using interval trees. It uses an interval tree library by Mikola Lysenko.
To illustrate how different this kind of filtering is, this chart will filter itself, i.e. its own bars will change as you brush over it. This behavior is different from most other dc.js/crossfilter charts - notice how many of the other bars outside of the range remain when you brush, because there are rows whose time intervals intersect both the brush and that bar's interval.
If you want the normal "don't filter yourself" behavior you can change
projectsPerMonthTree = ndx.groupAll().reduce(
to
projectsPerMonthTree = intervalDimension.groupAll().reduce(
add a comment |
I assume you want to aggregate over each time interval by counting the number of occupancies whose intervals intersect with that interval.
The reason you haven't seen too many examples is that it requires a specialized data structure called an interval tree to do it efficiently.
Some time ago I created an example using interval trees. It uses an interval tree library by Mikola Lysenko.
To illustrate how different this kind of filtering is, this chart will filter itself, i.e. its own bars will change as you brush over it. This behavior is different from most other dc.js/crossfilter charts - notice how many of the other bars outside of the range remain when you brush, because there are rows whose time intervals intersect both the brush and that bar's interval.
If you want the normal "don't filter yourself" behavior you can change
projectsPerMonthTree = ndx.groupAll().reduce(
to
projectsPerMonthTree = intervalDimension.groupAll().reduce(
add a comment |
I assume you want to aggregate over each time interval by counting the number of occupancies whose intervals intersect with that interval.
The reason you haven't seen too many examples is that it requires a specialized data structure called an interval tree to do it efficiently.
Some time ago I created an example using interval trees. It uses an interval tree library by Mikola Lysenko.
To illustrate how different this kind of filtering is, this chart will filter itself, i.e. its own bars will change as you brush over it. This behavior is different from most other dc.js/crossfilter charts - notice how many of the other bars outside of the range remain when you brush, because there are rows whose time intervals intersect both the brush and that bar's interval.
If you want the normal "don't filter yourself" behavior you can change
projectsPerMonthTree = ndx.groupAll().reduce(
to
projectsPerMonthTree = intervalDimension.groupAll().reduce(
I assume you want to aggregate over each time interval by counting the number of occupancies whose intervals intersect with that interval.
The reason you haven't seen too many examples is that it requires a specialized data structure called an interval tree to do it efficiently.
Some time ago I created an example using interval trees. It uses an interval tree library by Mikola Lysenko.
To illustrate how different this kind of filtering is, this chart will filter itself, i.e. its own bars will change as you brush over it. This behavior is different from most other dc.js/crossfilter charts - notice how many of the other bars outside of the range remain when you brush, because there are rows whose time intervals intersect both the brush and that bar's interval.
If you want the normal "don't filter yourself" behavior you can change
projectsPerMonthTree = ndx.groupAll().reduce(
to
projectsPerMonthTree = intervalDimension.groupAll().reduce(
edited Nov 29 '18 at 14:19
answered Nov 26 '18 at 12:28
GordonGordon
13.4k32262
13.4k32262
add a comment |
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%2f53471014%2fis-there-an-efficient-way-to-display-time-chart-in-dc-js-with-date-range-data%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