gnuplot

Understanding the use of the keyword every


My question regards the keyword every that is used to sample an input data file (i.e., .csv, .dat etc.). I am reading the documentation of the keyword that says the following:

     plot 'file' every {<point_incr>}
                         {:{<block_incr>}
                           {:{<start_point>}
                             {:{<start_block>}
                               {:{<end_point>}
                                 {:<end_block>}}}}}

The thing is I cannot completely comprehend how to adapt this to a data set. For instance, if I have some dummy data that I wish to use to create a bar chart for example and the data are the following


# first bars group
#x axis   #y axis
0          2
0.2        3                  
0.4        4                  
0.6        5                 
0.8        6                 
                             
#second bars group           
1          1 
1.2        2
1.4        3
1.6        4
1.8        5

#etc.
3     10
3.2   20
3.4   30
3.6   40
3.8   50 

4     20
4.2   30
4.4   40
4.6   50
4.8   60 

And lets say that I want to create four bar clusters from the data. One for every block. How can I use the syntax of the keyword? Could someone give me some examples to better understand the use of it? Thank you in advance


Solution

  • As you've found, the every keyword allows you to cherry-pick a subset of single-newline-separated points and double-newline-separated blocks from your datafile. Your example datafile shows 20 points divided into 4 blocks.

    So to plot the first block (indexed 0 in gnuplot), you only need to specify the end block, and use the default values for the other every parameters. Try:

    plot 'data.txt' every :::::0 with boxes
    

    It seems your goal is to plot each block with separate styling. Here's how you could do that with a few extra styling commands. (Note my use of gnuplot's shorthand for some keywords.)

    set key left top
    set boxwidth 0.2
    p 'data.txt' ev :::0::0 w boxes t 'first',\
      'data.txt' ev :::1::1 w boxes t 'second',\
      'data.txt' ev :::2::2 w boxes t 'third',\
      'data.txt' ev :::3::3 w boxes t 'fourth'
    

    example histogram