title: Histogram with numeric x-axis in gnuplot?
body: <p>I'm having this file as <code>data.dat</code>:</p>
  
  <pre><code>Xstep Y1 Y2 Y3 Y4
  332 1.22 0.00 0.00 1.43
  336 5.95 12.03 6.11 10.41
  340 81.05 81.82 81.92 81.05
  394 11.76 6.16 10.46 5.87
  398 0.00 0.00 1.51 1.25
  1036 0.03 0.00 0.00 0.00
  </code></pre>
  
  <p>I can plot this data as histogram with this script, <code>hist-v1.gplot</code> (using <code>set style data histogram</code>): </p>
  
  <pre><code>set xlabel "X values"
  set ylabel "Occurence"
  set style data histogram
  set style histogram cluster gap 1
  set style fill solid border -1
  set term png
  set output 'hist-v1.png'
  set boxwidth 0.9
  # attempt to set xtics so they are positioned numerically on x axis:
  set xtics ("332" 332, "336" 336, "340" 340, "394" 394, "398" 398, "1036" 1036)  
  # ti col reads the first entry of the column, uses it as title name 
  plot 'data.dat' using 2:xtic(1) ti col,  '' u 3 ti col, '' u 4 ti col, '' u 5 ti col
  </code></pre>
  
  <p>And by calling:</p>
  
  <pre><code>gnuplot hist-v1.gplot &amp;&amp; eog hist-v1.png
  </code></pre>
  
  <p>this image is generated:
  <a href="https://i.stack.imgur.com/gK8hv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gK8hv.png" alt="image hist-v1.png"></a>
  </p>
  
  <p>However, you can notice that the X axis is not scaled numerically - it understands the X values as categories (i.e. it is a category axis).</p>
  
  <p>I can get a more numerical X axis with the following script, <code>hist-v2.gplot</code> (using <code>with boxes</code>): </p>
  
  <pre><code>set xlabel "X values"
  set ylabel "Occurence"
  # in this case, histogram commands have no effect
  set style data histogram
  set style histogram cluster gap 1
  set style fill solid border -1
  set term png
  set output 'hist-v2.png'
  set boxwidth 0.9
  set xr [330:400]
  # here, setting xtics makes them positioned numerically on x axis:
  set xtics ("332" 332, "336" 336, "340" 340, "394" 394, "398" 398, "1036" 1036)  
  # 1:2 will ONLY work with proper xr; since we have x&gt;300; xr[0:10] generates "points y value undefined"!
  plot 'data.dat' using 1:2 ti col smooth frequency with boxes, '' u 1:3 ti col smooth frequency with boxes
  </code></pre>
  
  <p>And by calling:</p>
  
  <pre><code>gnuplot hist-v2.gplot &amp;&amp; eog hist-v2.png
  </code></pre>
  
  <p>this image is generated:
  <a href="http://img266.imageshack.us/img266/6717/histv2.png" rel="nofollow noreferrer">image hist-v2.png http://img266.imageshack.us/img266/6717/histv2.png</a></p>
  
  <p>Unfortunately, the bars 'overlap' here, so it is hard to read the graph. </p>
  
  <p>Is there a way to keep the numerical scale X axis as in <code>hist-v2.png</code>, but keep the 'bars' side by side with as in <code>hist-v1.png</code>? This thread, "<a href="https://web.archive.org/web/20150715065421/http://newsgroups.derkeiler.com:80/Archive/Comp/comp.graphics.apps.gnuplot/2009-09/msg00044.html" rel="nofollow noreferrer">Re: Histogram with x axis date error</a>" says you cannot: </p>
  
  <blockquote>
    <p>But it will be hard to pull the x-coordinate date out of the data file, ...</p>
  </blockquote>
  
  <p>but then, it refers to a different problem...</p>
  
  <p>Thanks,</p>
  
  <p>Cheers!</p>