Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gnuplot set background color of data label

Tags:

gnuplot

I want to set the background of data labels to white! The considered plot is a data plot of the following data (gnuDC.dat):

4   1570.96 1571
8   770.63  771
12  530.33  530
16  385.13  385
24  261.87  262
48  137.71  138
96  81.42   81

The plot command reads:

plot "gnuDC.dat" using 1:2 title "DC: GNU Fortran 4.7.2 + Open MPI 1.6.3" w p ls 1, \
 "gnuDC.dat" using 1:2:3 with labels center offset 2.,0.7 font "Helvetica,14" tc ls 4 notitle, \
 "gnuDC.dat" using 1:3 notitle smooth csplines ls 14

Which gives me: enter image description here

It looks ok but think one could read the lables better when the would have an white background. Is there an easy way to add the white background for all labels at once?

Here is the whole print file:

set terminal postscript eps size 14cm,10cm enhanced color \
        font 'Helvetica,18' linewidth 2

set output 'test.eps'

# Line style for axes
set style line 80 lt 0
set style line 80 lt rgb "#808080"

# Line style for grid
set style line 81 lt 3  # dashed
set style line 81 lt rgb "#808080" lw 0.5  # grey

set grid back linestyle 81
set border 3 back linestyle 80
set xtics nomirror
set ytics nomirror

set style line 100 lc rgb '#0060ad' lt 1 lw 2 pt 7 ps 1.5
set style line 200 lc rgb '#a2142f' lt 1 lw 2 pt 7 ps 1.5
set pointintervalbox 0

set style line 1 lc rgb '#0072bd' lt 1 lw 1 pt 9 pi -10 ps 2
set style line 2 lc rgb '#77ac30' lt 1 lw 1 pt 7 pi -10 ps 2
set style line 3 lc rgb '#d95319' lt 1 lw 1 pt 1 pi -10 ps 2

set bmargin 4
set lmargin 5
set rmargin 4

unset title
set size 1,1
#set origin 0,0.27
set xlabel "number of cores, -"
set ylabel "Computational time, s"

set key top right
set key spacing 1.5
set key width -12

set yrange [0:1710]

plot "gnuDC.dat" using 1:2 title "DC: GNU Fortran 4.7.2 + Open MPI 1.6.3" w p ls 1, \
     "gnuDC.dat" using 1:2:3 with labels center offset 2.,0.7 font "Helvetica,14" tc ls 4 notitle, \
     "gnuDC.dat" using 1:3 notitle smooth csplines ls 14
like image 261
chi86 Avatar asked Sep 16 '15 05:09

chi86


1 Answers

With gnuplot version 5 there is a boxed option which does exactly this: give labels a background and, if you want, also a border. The style is controlled with set style textbox, e.g.

set style textbox opaque noborder
plot ... with labels boxed ...

Applied to your script (with some minor changes due to the changed dash handling since 5.0):

# Line style for axes

set style line 80 lt rgb "#808080"

# Line style for grid
set style line 81 dt 3  # dashed
set style line 81 lt rgb "#808080" lw 0.5  # grey

set grid back linestyle 81
set border 3 back linestyle 80
set tics nomirror

set linetype 1 lc rgb '#0072bd' pt 9 pi -10 ps 2 dt 3

set bmargin 4
set lmargin 5
set rmargin 4

set xlabel "number of cores, -"
set ylabel "Computational time, s"

set key top right
set key spacing 1.5
set key width -12
set yrange [0:1710]

set style textbox opaque noborder

plot "gnuDC.dat" using 1:2 title "DC: GNU Fortran 4.7.2 + Open MPI 1.6.3" w p lt 1, \
     "gnuDC.dat" using 1:2:3 with labels boxed center offset 2.,0.7 font "Helvetica,10" tc ls 1 notitle, \
     "gnuDC.dat" using 1:3 notitle smooth csplines lt 1

enter image description here

No, for versions 4.6 and earlier there isn't an easy way to achieve this.

like image 117
Christoph Avatar answered Oct 26 '22 12:10

Christoph