pgfplots: How to force datetime to only display xticks with even times (18:00) instead of odd times (18:34)?












1















Assumed we have the following plot from user darthbith to display a pgfplot with a time axis:





Minimum Working Example (MWE):



documentclass{standalone}
usepackage{pgfplots}
usepgfplotslibrary{dateplot, statistics}
pgfplotsset{compat=newest}

usepackage{filecontents}

begin{filecontents*}{data.txt}
no, date, value
1, 2015-09-13 21:00:00, 922
2, 2015-09-13 22:00:00, 3993
3, 2015-09-13 23:00:00, 3003
4, 2015-09-14 00:00:00, 991
5, 2015-09-14 01:00:00, 2021
6, 2015-09-14 02:00:00, 841
7, 2015-09-14 03:00:00, 2812
8, 2015-09-14 14:00:00, 991
9, 2015-09-14 15:00:00, 231
10, 2015-09-14 16:00:00, 678
end{filecontents*}

begin{document}

begin{tikzpicture}

begin{axis}[ xlabel=Time,
ylabel=Value,
date coordinates in=x,
table/col sep=comma,
date ZERO=2015-09-13,
xticklabel=hour:minute,
xticklabel style={rotate=90, anchor=near xticklabel}, ]

addplot+[no markers] table[x=date,y=value] {data.txt};
end{axis}

end{tikzpicture}

end{document}




Screenshot of the result:



Screenshot of the result





Description of the issue:



As you can see, the x-axis has displayed very odd xticks.



How can I force pgfplots to only display even xticks, e.g. nice times like 19:00, 20:00 etc. instead of those unhappy odd random times like 19:12?





I know that I could simply use an approach to only show desired xticks via





  • xticks = {20:00, 21:00}
    and


  • xtick label = {20:00, 21:00},


however - this is causing a lot of work in case you have longer time spans containing many values. I guess it is possible to force pgfplots to display only even time numbers by itself anyhow?










share|improve this question



























    1















    Assumed we have the following plot from user darthbith to display a pgfplot with a time axis:





    Minimum Working Example (MWE):



    documentclass{standalone}
    usepackage{pgfplots}
    usepgfplotslibrary{dateplot, statistics}
    pgfplotsset{compat=newest}

    usepackage{filecontents}

    begin{filecontents*}{data.txt}
    no, date, value
    1, 2015-09-13 21:00:00, 922
    2, 2015-09-13 22:00:00, 3993
    3, 2015-09-13 23:00:00, 3003
    4, 2015-09-14 00:00:00, 991
    5, 2015-09-14 01:00:00, 2021
    6, 2015-09-14 02:00:00, 841
    7, 2015-09-14 03:00:00, 2812
    8, 2015-09-14 14:00:00, 991
    9, 2015-09-14 15:00:00, 231
    10, 2015-09-14 16:00:00, 678
    end{filecontents*}

    begin{document}

    begin{tikzpicture}

    begin{axis}[ xlabel=Time,
    ylabel=Value,
    date coordinates in=x,
    table/col sep=comma,
    date ZERO=2015-09-13,
    xticklabel=hour:minute,
    xticklabel style={rotate=90, anchor=near xticklabel}, ]

    addplot+[no markers] table[x=date,y=value] {data.txt};
    end{axis}

    end{tikzpicture}

    end{document}




    Screenshot of the result:



    Screenshot of the result





    Description of the issue:



    As you can see, the x-axis has displayed very odd xticks.



    How can I force pgfplots to only display even xticks, e.g. nice times like 19:00, 20:00 etc. instead of those unhappy odd random times like 19:12?





    I know that I could simply use an approach to only show desired xticks via





    • xticks = {20:00, 21:00}
      and


    • xtick label = {20:00, 21:00},


    however - this is causing a lot of work in case you have longer time spans containing many values. I guess it is possible to force pgfplots to display only even time numbers by itself anyhow?










    share|improve this question

























      1












      1








      1








      Assumed we have the following plot from user darthbith to display a pgfplot with a time axis:





      Minimum Working Example (MWE):



      documentclass{standalone}
      usepackage{pgfplots}
      usepgfplotslibrary{dateplot, statistics}
      pgfplotsset{compat=newest}

      usepackage{filecontents}

      begin{filecontents*}{data.txt}
      no, date, value
      1, 2015-09-13 21:00:00, 922
      2, 2015-09-13 22:00:00, 3993
      3, 2015-09-13 23:00:00, 3003
      4, 2015-09-14 00:00:00, 991
      5, 2015-09-14 01:00:00, 2021
      6, 2015-09-14 02:00:00, 841
      7, 2015-09-14 03:00:00, 2812
      8, 2015-09-14 14:00:00, 991
      9, 2015-09-14 15:00:00, 231
      10, 2015-09-14 16:00:00, 678
      end{filecontents*}

      begin{document}

      begin{tikzpicture}

      begin{axis}[ xlabel=Time,
      ylabel=Value,
      date coordinates in=x,
      table/col sep=comma,
      date ZERO=2015-09-13,
      xticklabel=hour:minute,
      xticklabel style={rotate=90, anchor=near xticklabel}, ]

      addplot+[no markers] table[x=date,y=value] {data.txt};
      end{axis}

      end{tikzpicture}

      end{document}




      Screenshot of the result:



      Screenshot of the result





      Description of the issue:



      As you can see, the x-axis has displayed very odd xticks.



      How can I force pgfplots to only display even xticks, e.g. nice times like 19:00, 20:00 etc. instead of those unhappy odd random times like 19:12?





      I know that I could simply use an approach to only show desired xticks via





      • xticks = {20:00, 21:00}
        and


      • xtick label = {20:00, 21:00},


      however - this is causing a lot of work in case you have longer time spans containing many values. I guess it is possible to force pgfplots to display only even time numbers by itself anyhow?










      share|improve this question














      Assumed we have the following plot from user darthbith to display a pgfplot with a time axis:





      Minimum Working Example (MWE):



      documentclass{standalone}
      usepackage{pgfplots}
      usepgfplotslibrary{dateplot, statistics}
      pgfplotsset{compat=newest}

      usepackage{filecontents}

      begin{filecontents*}{data.txt}
      no, date, value
      1, 2015-09-13 21:00:00, 922
      2, 2015-09-13 22:00:00, 3993
      3, 2015-09-13 23:00:00, 3003
      4, 2015-09-14 00:00:00, 991
      5, 2015-09-14 01:00:00, 2021
      6, 2015-09-14 02:00:00, 841
      7, 2015-09-14 03:00:00, 2812
      8, 2015-09-14 14:00:00, 991
      9, 2015-09-14 15:00:00, 231
      10, 2015-09-14 16:00:00, 678
      end{filecontents*}

      begin{document}

      begin{tikzpicture}

      begin{axis}[ xlabel=Time,
      ylabel=Value,
      date coordinates in=x,
      table/col sep=comma,
      date ZERO=2015-09-13,
      xticklabel=hour:minute,
      xticklabel style={rotate=90, anchor=near xticklabel}, ]

      addplot+[no markers] table[x=date,y=value] {data.txt};
      end{axis}

      end{tikzpicture}

      end{document}




      Screenshot of the result:



      Screenshot of the result





      Description of the issue:



      As you can see, the x-axis has displayed very odd xticks.



      How can I force pgfplots to only display even xticks, e.g. nice times like 19:00, 20:00 etc. instead of those unhappy odd random times like 19:12?





      I know that I could simply use an approach to only show desired xticks via





      • xticks = {20:00, 21:00}
        and


      • xtick label = {20:00, 21:00},


      however - this is causing a lot of work in case you have longer time spans containing many values. I guess it is possible to force pgfplots to display only even time numbers by itself anyhow?







      tikz-pgf pgfplots datetime axis ticks






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 21 at 22:39









      DaveDave

      1,128619




      1,128619






















          1 Answer
          1






          active

          oldest

          votes


















          3














          You only need to adjust the xtick distance (knowing that 1 means 1 day).



          documentclass{standalone}
          usepackage{pgfplots}
          usepgfplotslibrary{dateplot, statistics}
          pgfplotsset{compat=newest}

          usepackage{filecontents}

          begin{filecontents*}{data.txt}
          no, date, value
          1, 2015-09-13 21:00:00, 922
          2, 2015-09-13 22:00:00, 3993
          3, 2015-09-13 23:00:00, 3003
          4, 2015-09-14 00:00:00, 991
          5, 2015-09-14 01:00:00, 2021
          6, 2015-09-14 02:00:00, 841
          7, 2015-09-14 03:00:00, 2812
          8, 2015-09-14 14:00:00, 991
          9, 2015-09-14 15:00:00, 231
          10, 2015-09-14 16:00:00, 678
          end{filecontents*}

          begin{document}

          begin{tikzpicture}

          begin{axis}[ xlabel=Time,
          ylabel=Value,
          date coordinates in=x,
          table/col sep=comma,
          date ZERO=2015-09-13 00:00:00,
          xticklabel=hour:minute,
          xtick distance=2/24,
          xticklabel style={rotate=90, anchor=near xticklabel}, ]

          addplot+[no markers] table[x=date,y=value] {data.txt};
          end{axis}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer
























          • thank you so much! :-)

            – Dave
            Mar 22 at 7:47












          Your Answer








          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "85"
          };
          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: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          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%2ftex.stackexchange.com%2fquestions%2f480791%2fpgfplots-how-to-force-datetime-to-only-display-xticks-with-even-times-1800-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









          3














          You only need to adjust the xtick distance (knowing that 1 means 1 day).



          documentclass{standalone}
          usepackage{pgfplots}
          usepgfplotslibrary{dateplot, statistics}
          pgfplotsset{compat=newest}

          usepackage{filecontents}

          begin{filecontents*}{data.txt}
          no, date, value
          1, 2015-09-13 21:00:00, 922
          2, 2015-09-13 22:00:00, 3993
          3, 2015-09-13 23:00:00, 3003
          4, 2015-09-14 00:00:00, 991
          5, 2015-09-14 01:00:00, 2021
          6, 2015-09-14 02:00:00, 841
          7, 2015-09-14 03:00:00, 2812
          8, 2015-09-14 14:00:00, 991
          9, 2015-09-14 15:00:00, 231
          10, 2015-09-14 16:00:00, 678
          end{filecontents*}

          begin{document}

          begin{tikzpicture}

          begin{axis}[ xlabel=Time,
          ylabel=Value,
          date coordinates in=x,
          table/col sep=comma,
          date ZERO=2015-09-13 00:00:00,
          xticklabel=hour:minute,
          xtick distance=2/24,
          xticklabel style={rotate=90, anchor=near xticklabel}, ]

          addplot+[no markers] table[x=date,y=value] {data.txt};
          end{axis}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer
























          • thank you so much! :-)

            – Dave
            Mar 22 at 7:47
















          3














          You only need to adjust the xtick distance (knowing that 1 means 1 day).



          documentclass{standalone}
          usepackage{pgfplots}
          usepgfplotslibrary{dateplot, statistics}
          pgfplotsset{compat=newest}

          usepackage{filecontents}

          begin{filecontents*}{data.txt}
          no, date, value
          1, 2015-09-13 21:00:00, 922
          2, 2015-09-13 22:00:00, 3993
          3, 2015-09-13 23:00:00, 3003
          4, 2015-09-14 00:00:00, 991
          5, 2015-09-14 01:00:00, 2021
          6, 2015-09-14 02:00:00, 841
          7, 2015-09-14 03:00:00, 2812
          8, 2015-09-14 14:00:00, 991
          9, 2015-09-14 15:00:00, 231
          10, 2015-09-14 16:00:00, 678
          end{filecontents*}

          begin{document}

          begin{tikzpicture}

          begin{axis}[ xlabel=Time,
          ylabel=Value,
          date coordinates in=x,
          table/col sep=comma,
          date ZERO=2015-09-13 00:00:00,
          xticklabel=hour:minute,
          xtick distance=2/24,
          xticklabel style={rotate=90, anchor=near xticklabel}, ]

          addplot+[no markers] table[x=date,y=value] {data.txt};
          end{axis}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer
























          • thank you so much! :-)

            – Dave
            Mar 22 at 7:47














          3












          3








          3







          You only need to adjust the xtick distance (knowing that 1 means 1 day).



          documentclass{standalone}
          usepackage{pgfplots}
          usepgfplotslibrary{dateplot, statistics}
          pgfplotsset{compat=newest}

          usepackage{filecontents}

          begin{filecontents*}{data.txt}
          no, date, value
          1, 2015-09-13 21:00:00, 922
          2, 2015-09-13 22:00:00, 3993
          3, 2015-09-13 23:00:00, 3003
          4, 2015-09-14 00:00:00, 991
          5, 2015-09-14 01:00:00, 2021
          6, 2015-09-14 02:00:00, 841
          7, 2015-09-14 03:00:00, 2812
          8, 2015-09-14 14:00:00, 991
          9, 2015-09-14 15:00:00, 231
          10, 2015-09-14 16:00:00, 678
          end{filecontents*}

          begin{document}

          begin{tikzpicture}

          begin{axis}[ xlabel=Time,
          ylabel=Value,
          date coordinates in=x,
          table/col sep=comma,
          date ZERO=2015-09-13 00:00:00,
          xticklabel=hour:minute,
          xtick distance=2/24,
          xticklabel style={rotate=90, anchor=near xticklabel}, ]

          addplot+[no markers] table[x=date,y=value] {data.txt};
          end{axis}
          end{tikzpicture}
          end{document}


          enter image description here






          share|improve this answer













          You only need to adjust the xtick distance (knowing that 1 means 1 day).



          documentclass{standalone}
          usepackage{pgfplots}
          usepgfplotslibrary{dateplot, statistics}
          pgfplotsset{compat=newest}

          usepackage{filecontents}

          begin{filecontents*}{data.txt}
          no, date, value
          1, 2015-09-13 21:00:00, 922
          2, 2015-09-13 22:00:00, 3993
          3, 2015-09-13 23:00:00, 3003
          4, 2015-09-14 00:00:00, 991
          5, 2015-09-14 01:00:00, 2021
          6, 2015-09-14 02:00:00, 841
          7, 2015-09-14 03:00:00, 2812
          8, 2015-09-14 14:00:00, 991
          9, 2015-09-14 15:00:00, 231
          10, 2015-09-14 16:00:00, 678
          end{filecontents*}

          begin{document}

          begin{tikzpicture}

          begin{axis}[ xlabel=Time,
          ylabel=Value,
          date coordinates in=x,
          table/col sep=comma,
          date ZERO=2015-09-13 00:00:00,
          xticklabel=hour:minute,
          xtick distance=2/24,
          xticklabel style={rotate=90, anchor=near xticklabel}, ]

          addplot+[no markers] table[x=date,y=value] {data.txt};
          end{axis}
          end{tikzpicture}
          end{document}


          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 21 at 22:50









          marmotmarmot

          113k5145275




          113k5145275













          • thank you so much! :-)

            – Dave
            Mar 22 at 7:47



















          • thank you so much! :-)

            – Dave
            Mar 22 at 7:47

















          thank you so much! :-)

          – Dave
          Mar 22 at 7:47





          thank you so much! :-)

          – Dave
          Mar 22 at 7:47


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to TeX - LaTeX Stack Exchange!


          • 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%2ftex.stackexchange.com%2fquestions%2f480791%2fpgfplots-how-to-force-datetime-to-only-display-xticks-with-even-times-1800-i%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

          How to change which sound is reproduced for terminal bell?

          Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

          Can I use Tabulator js library in my java Spring + Thymeleaf project?