How do I get gnuplot to read my time format and keep the times in order of the input file?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I'm trying to get gnuplot to (a) read my input time format and (b) plot the time in order of the input file. I'm trying to plot changes to a value over the past 24 hours starting at 18 UTC.
It doesn't appear to like:
set xdata time
set timefmt "%H%M"
It also likes to plot my xaxis values from 0000 UTC to 2300 UTC and drops leading zeros. See below for input file. I would like the newest data (1800UTC in this case) to be on the right side of my xaxis. Thanks.
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
and so on...
gnuplot
add a comment |
I'm trying to get gnuplot to (a) read my input time format and (b) plot the time in order of the input file. I'm trying to plot changes to a value over the past 24 hours starting at 18 UTC.
It doesn't appear to like:
set xdata time
set timefmt "%H%M"
It also likes to plot my xaxis values from 0000 UTC to 2300 UTC and drops leading zeros. See below for input file. I would like the newest data (1800UTC in this case) to be on the right side of my xaxis. Thanks.
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
and so on...
gnuplot
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51
add a comment |
I'm trying to get gnuplot to (a) read my input time format and (b) plot the time in order of the input file. I'm trying to plot changes to a value over the past 24 hours starting at 18 UTC.
It doesn't appear to like:
set xdata time
set timefmt "%H%M"
It also likes to plot my xaxis values from 0000 UTC to 2300 UTC and drops leading zeros. See below for input file. I would like the newest data (1800UTC in this case) to be on the right side of my xaxis. Thanks.
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
and so on...
gnuplot
I'm trying to get gnuplot to (a) read my input time format and (b) plot the time in order of the input file. I'm trying to plot changes to a value over the past 24 hours starting at 18 UTC.
It doesn't appear to like:
set xdata time
set timefmt "%H%M"
It also likes to plot my xaxis values from 0000 UTC to 2300 UTC and drops leading zeros. See below for input file. I would like the newest data (1800UTC in this case) to be on the right side of my xaxis. Thanks.
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
and so on...
gnuplot
gnuplot
edited Jan 4 at 0:17
Nick
38.9k132443
38.9k132443
asked Jan 4 at 0:14
Justin PattenJustin Patten
1
1
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51
add a comment |
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51
add a comment |
1 Answer
1
active
oldest
votes
the suggestion from Michael O. to use a complete date with year, month, day is probably the most versatile way to handle your topic.
However, if you cannot or don't want to change your data you could use the following:
Solution 1: add an extra day (or 86400 seconds) when data passes "0000"
Solution 2: use the first column as string label (x-axis will only be scaled correctly if your timesteps are constant). For fun, I added the possiblity to display only a part of the labels.
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...will result in:

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%2f54031572%2fhow-do-i-get-gnuplot-to-read-my-time-format-and-keep-the-times-in-order-of-the-i%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 suggestion from Michael O. to use a complete date with year, month, day is probably the most versatile way to handle your topic.
However, if you cannot or don't want to change your data you could use the following:
Solution 1: add an extra day (or 86400 seconds) when data passes "0000"
Solution 2: use the first column as string label (x-axis will only be scaled correctly if your timesteps are constant). For fun, I added the possiblity to display only a part of the labels.
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...will result in:

add a comment |
the suggestion from Michael O. to use a complete date with year, month, day is probably the most versatile way to handle your topic.
However, if you cannot or don't want to change your data you could use the following:
Solution 1: add an extra day (or 86400 seconds) when data passes "0000"
Solution 2: use the first column as string label (x-axis will only be scaled correctly if your timesteps are constant). For fun, I added the possiblity to display only a part of the labels.
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...will result in:

add a comment |
the suggestion from Michael O. to use a complete date with year, month, day is probably the most versatile way to handle your topic.
However, if you cannot or don't want to change your data you could use the following:
Solution 1: add an extra day (or 86400 seconds) when data passes "0000"
Solution 2: use the first column as string label (x-axis will only be scaled correctly if your timesteps are constant). For fun, I added the possiblity to display only a part of the labels.
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...will result in:

the suggestion from Michael O. to use a complete date with year, month, day is probably the most versatile way to handle your topic.
However, if you cannot or don't want to change your data you could use the following:
Solution 1: add an extra day (or 86400 seconds) when data passes "0000"
Solution 2: use the first column as string label (x-axis will only be scaled correctly if your timesteps are constant). For fun, I added the possiblity to display only a part of the labels.
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...will result in:

answered Jan 4 at 19:37
theozhtheozh
1,597312
1,597312
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%2f54031572%2fhow-do-i-get-gnuplot-to-read-my-time-format-and-keep-the-times-in-order-of-the-i%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
You can do this only by adding additional information about date: year, month, day. Because gnuplot doesn't know what is "0000", is that the next day or the current one.
– Michael O.
Jan 4 at 12:51