6

I have the following data:

1   3215
2   321
...
31_60   59
60+   32

I would like to generate histogram using gnuplot and put the value of bar on top of it.

Here is the gnuplot command I tried to create histogram:

set style data histogram
set xtics rotate
plot 'file.dat' using 2:xtic(1)

Can someone tell me how to add values on top of the bars generated?

I found the following link related histogram (http://gnuplot-tricks.blogspot.com/2009/10/more-on-histograms.html), but didnt get what its doing exactly.

Christoph
  • 47,569
  • 8
  • 87
  • 187
pydichandra
  • 63
  • 1
  • 1
  • 3

3 Answers3

13

using 0 works well with xtic().

plot 'file.dat' using 2:xtic(1) with histogram, '' using 0:2:2 with labels
dai1741
  • 226
  • 2
  • 5
  • how would you control the label position over the bar? I am doing that way but labels are inside bars and not over the bars, check my question please http://stackoverflow.com/questions/40469555/gnuplot-cant-display-values-over-the-bar – Luis González Nov 07 '16 at 16:51
4

Suppose I have the following data.dat file

"Method 1"              99.63               9.13                
"Method 2"              97.35               10.85               
"Method 3"              97.16               13.76                        
"Method 4"              95.16               15.56

I can get the following bar graph plot with values at the top of the bar with following line of commands in gnuplot:

reset

set terminal postscript eps size 3.5,2.62 enhanced color font 'Helvetica,20'  lw 2
set output 'StackOverflow.eps'

set style fill solid 1.00
set style histogram clustered gap 1
set style data histograms
set yrange [0:120] 
set xtics  norangelimit font ",8"
set ytics  norangelimit font ",8"
set xlabel "X-Axis" font "Helvetica,10"
set ylabel "Y-Axis" font "Helvetica,10"
set key font ",8"
set key width -8

xoffset=0.17
yoffset=0.03

plot 'data.dat' using 2:xtic(1) with histogram  title "Parameter 1", \
     '' u 3 with histogram title "Parameter 2", \
     '' u 0:2:2  with labels font "Helvetica,10" offset -0.9,0.5 title " ", \
     '' u 0:3:3  with labels font "Helvetica,10" offset 0.9,0.5 title " "

Result:

Bar graph Plot with values at top of the bar

theozh
  • 22,244
  • 5
  • 28
  • 72
user1228310
  • 111
  • 1
  • 1
  • 4
4

With this as some sample data file Data.dat:

1 10
2 20
3 15
4 16
5 19
6 5

You could run this script to display boxes and the corresponding value of that box above it:

set key off
plot 'Data.dat' with boxes fill pattern 1, '' u 1:($2 + 0.5):($2) with labels

Notice the u 1:($2 + 0.5):($2) where the 0.5 specifies how much the value is above the box.

Woltan
  • 13,723
  • 15
  • 78
  • 104