Gnuplot: Labels plotted many times - label

I'm doing a multiplot on gnuplot 5.0 and I set my own labels for the y axis, but it seems that some of these labels are plotted more than once, since they have a bold outlook.
Here is what it looks like:
Here is my code:
set multiplot layout 3,2 rowsfirst title 'Time stuff'
TOPGRAPH = "set tmargin at screen 0.80;set bmargin at screen 0.60;set ytics(0,14,18,22);set yrange[12:22];unset ylabel"
MIDDLEGRAPH = "set tmargin at screen 0.60;set bmargin at screen 0.40;set ytics(0,2,5,8);set yrange[0:10];unset ylabel"
BOTTOMGRAPH = "set tmargin at screen 0.40;set bmargin at screen 0.20;set ytics(0,6,7);set yrange[5:8];unset ylabel"
LRMARGIN = "set lmargin at screen 0.15;set rmargin at screen 0.45"
NOXLABEL = "unset xlabel"
XTICS = "set xtics 0,2500,10000; set format ''"
#TOPGRAPH;#LRMARGIN;#NOXLABEL;#XTICS
set label 1 'X length' at screen 0.10, 0.65 rotate left
plot 'ite_x' u 1:3:4 w filledcu lc 'grey' notitle, 'ite_x' u 1:2 w lines lc 'red' notitle
#MIDDLEGRAPH;#LRMARGIN;#NOXLABEL;#XTICS
set label 2 'Y length' at screen 0.10,0.45 rotate left
plot 'ite_y' u 1:3:4 w filledcu lc 'grey' notitle, 'ite_y' u 1:2 w lines lc 'red' notitle
#BOTTOMGRAPH;#LRMARGIN
set arrow from 0,5 to 0,8 nohead front
set label 3 'Z length' at screen 0.10,0.25 rotate left
unset format x
set xtics 0,2500,10000
set xlabel 'Time when bead placed'
plot 'ite_z' u 1:3:4 w filledcu lc 'grey' notitle, 'ite_z' u 1:2 w lines lc 'red' notitle

Related

xtic text has gaps. How can I adjust the terminal svg font to avoid this?

Below is the script used to generate the plot. What should I change to fix the spacing of the xtic text? I have macOS Catalina.#theozh
#/Users/CourtneyBrea/Desktop/ORR-Figures/free-energy-diagram
myFileIn(i) = sprintf("step-%d.dat",i)
myFileOut(i) = sprintf("step-%d.svg",i)
set term svg font "{/:Bold}Sans,22"
set border 15 front lt black linewidth 3.000 dashtype solid
set xlabel "Reaction Coordinate"
set xrange [-0.2:5.2]
set xtics nomirror scale 0
set ylabel "Free Energy (eV)"
set yrange[-5:0.1]
set ytics out nomirror
set key noautotitle samplen 2
set errorbars 0
dx = 0.2
do for [i=1:30] {
set output myFileOut(i)
plot myFileIn(i) u 0:2:(dx):xtic(1) w xerr lc "blue" lw 3 ps 0 ti columnheader(2), \
'' u 0:3:(dx) w xerr lc "red" lw 3 ps 0 ti columnheader(3), \
x1=y1=NaN '' u (x0=x1,x1=$0,x0-1+dx):(y0=y1,y1=$2,y0):(1-2*dx):(y1-y0) w vec dt 4 lc "blue" nohead, \
x1=y1=NaN '' u (x0=x1,x1=$0,x0-1+dx):(y0=y1,y1=$3,y0):(1-2*dx):(y1-y0) w vec dt 4 lc "red" nohead
}
set output # close the last file
### end of script
Input file below
"Reaction Coordinate" "0 V" "0.43 V"
O_{2} 0 -3.00
O#^*_{2} -0.10 -3.67
OOH^* -1.00 -3.90
O^* -2.00 -4.00
OH^* -4.00 -4.92
H_{2}O -4.92 -4.92
I suspect the problem is that you have placed the enhanced text notation for bold text in the font name rather than placing it in the text being printed. That probably confuses the program you are using to view the resulting svg file.
The correct way is to set the terminal font as just a name and a size, and then separately add any additional markup to the text strings. Revised commands below, with a screen capture of the svg file as viewed in firefox.
Note that I have applied the bold attribute only to the tic labels, because that is the tricky part. You can apply to other labels or text as you like.
set term svg font "Sans,22"
set output "gap.svg"
makebold(text) = sprintf("{/:Bold %s}", text)
set border 15 front lt black linewidth 3.000 dashtype solid
set xlabel "Reaction Coordinate"
set xrange [-0.2:5.2]
set xtics nomirror scale 0
set ylabel "Free Energy (eV)"
set yrange[-5:0.1]
set ytics out nomirror
set key noautotitle samplen 2
set errorbars 0
dx = 0.2
plot "gap.dat" u 0:2:(dx):xtic(makebold(strcol(1))) w xerr lc "blue" lw 3 ps 0 ti columnheader(2), \
'' u 0:3:(dx) w xerr lc "red" lw 3 ps 0 ti columnheader(3), \
x1=y1=NaN '' u (x0=x1,x1=$0,x0-1+dx):(y0=y1,y1=$2,y0):(1-2*dx):(y1-y0) w vec dt 4 lc "blue" nohead, \
x1=y1=NaN '' u (x0=x1,x1=$0,x0-1+dx):(y0=y1,y1=$3,y0):(1-2*dx):(y1-y0) w vec dt 4 lc "red" nohead

gnuplot errors: " line 114: warning: Skipping data file with no valid points", " line 114: all points y value undefined!". "Cannot find or open file"

Here's the image of my data file:
EPAM_2000_160.txt
When I run it through the cmd prompt, it gives an error: "Cannot find or open file "EPAM_2000_160.txt", No data in plot".
Both these files are present in the same folder in documents. I can't understand why is it unable to find.
Here's the code of the .plt file:
#set terminal x11
#set output
unset clip points
set clip one
unset clip two
set bar 1.000000
set border 31 lt -1 lw 1.000
set xdata time
set ydata time
set zdata time
set x2data time
set y2data time
set cbdata time
set timefmt "%d/%m/%y,%H:%M"
set timefmt "%d/%m/%y,%H:%M"
set timefmt "%d/%m/%y,%H:%M"
set timefmt "%d/%m/%y,%H:%M"
set timefmt "%d/%m/%y,%H:%M"
set timefmt "%d/%m/%y,%H:%M"
set boxwidth
set style fill empty border
set dummy x,y
set format x "% g"
set format y "% g"
set format x2 "% g"
set format y2 "% g"
set format z "% g"
set format cb "% g"
set angles radians
unset grid
set key title ""
set key right top Right noreverse enhanced box linetype -2 linewidth 1.000 samplen 4 spacing 1 width 0 height 0 autotitles
unset label
unset arrow
unset style line
unset style arrow
unset logscale
set offsets 0, 0, 0, 0
set pointsize 1
set encoding default
unset polar
unset parametric
unset decimalsign
set view 60, 30, 1, 1
set samples 100, 100
set isosamples 10, 10
set surface
unset contour
set clabel '%8.3g'
set mapping cartesian
set datafile separator whitespace
unset hidden3d
set cntrparam order 4
set cntrparam linear
set cntrparam levels auto 5
set cntrparam points 5
set size ratio 0 1,1
set origin 0,0
set style data points
set style function lines
set xzeroaxis lt -2 lw 1.000
set yzeroaxis lt -2 lw 1.000
set x2zeroaxis lt -2 lw 1.000
set y2zeroaxis lt -2 lw 1.000
set tics in
set ticslevel 0.5
set tics scale 1
set mxtics default
set mytics default
set mztics default
set mx2tics default
set my2tics default
set mcbtics default
set xtics border mirror norotate autofreq
set ytics border mirror norotate autofreq
set ztics border nomirror norotate autofreq
set nox2tics
set noy2tics
set cbtics border mirror norotate autofreq
set title "" offset 0.000000,0.000000 font ""
set timestamp "" bottom norotate offset 0.000000,0.000000 font ""
set rrange [ * : * ] noreverse nowriteback # (currently [0.00000:10.0000] )
set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] )
set urange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] )
set vrange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] )
set xlabel "DOY 2000" offset 0.000000,0.000000 font ""
set x2label "" offset 0.000000,0.000000 font ""
set xrange [ 160.3 : 160.44 ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set x2range [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set ylabel "Ion intensity Sector Avg,1/(cm**2-s-sr-MeV) LEMS120" offset 0.000000,0.000000 font ""
set y2label "" offset 0.000000,0.000000 font ""
set yrange [ 1. : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set y2range [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set zlabel "" offset 0.000000,0.000000 font ""
set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set cblabel "" offset 0.000000,0.000000 font ""
set cbrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] )
set zero 1e-08
set lmargin -1
set bmargin -1
set rmargin -1
set tmargin -1
set locale "C"
set pm3d scansautomatic flush begin noftriangles nohidden3d implicit corners2color mean
unset pm3d
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
set palette rgbformulae 7, 5, 15
set colorbox default
set colorbox vertical origin 0.9,0.2 size 0.1,0.63 bdefault
set loadpath
set fontpath
set fit noerrorvariables
set arrow from 160.36,1. to 160.36,700000 nohead
plot 'EPAM_2000_160.txt' u 1:2 t '0.047-0.068 MeV'
set term post colour eps enh
set output "EPAM_2000_160.eps"
replot
set output
set term x11
# EOF
If you open the file with an absolute link, make sure to double each backslash as backslash needs escaping in C/C++ strings.
Otherwise make sure the relative path to the file is correct for the current path from where the application is started.
Thank you so much! Though I believe something is wrong with the .plt file itself. Because I was able to plot just the text file without going through the .plt file. And I have saved that as a new .plt file. So i'll just add the old commands one by one and figure out what messed up ig.
Here is the code for the new .plt file:
# set terminal windows 0 color solid butt enhanced standalone
# set output
unset clip points
set clip one
unset clip two
set errorbars front 1.000000
set border 31 front lt black linewidth 1.000 dashtype solid
set zdata
set ydata
set xdata
set y2data
set x2data
set boxwidth
set style fill empty border
set style rectangle back fc bgnd fillstyle solid 1.00 border lt -1
set style circle radius graph 0.02
set style ellipse size graph 0.05, 0.03 angle 0 units xy
set dummy x, y
set format x "% h"
set format y "% h"
set format x2 "% h"
set format y2 "% h"
set format z "% h"
set format cb "% h"
set format r "% h"
set ttics format "% h"
set timefmt "%d/%m/%y,%H:%M"
set angles radians
set tics back
unset grid
unset raxis
set theta counterclockwise right
set style parallel front lt black linewidth 2.000 dashtype solid
set key title "" center
set key fixed right top vertical Right noreverse enhanced autotitle nobox
set key noinvert samplen 4 spacing 1 width 0 height 0
set key maxcolumns 0 maxrows 0
set key noopaque
unset label
unset arrow
set style increment default
unset style line
unset style arrow
set style histogram clustered gap 2 title textcolor lt -1
unset object
set style textbox transparent margins 1.0, 1.0 border lt -1 linewidth 1.0
set offsets 0, 0, 0, 0
set pointsize 1
set pointintervalbox 1
set encoding cp1252
unset polar
unset parametric
unset decimalsign
unset micro
unset minussign
set view 60, 30, 1, 1
set view azimuth 0
set rgbmax 255
set samples 100, 100
set isosamples 10, 10
set surface
unset contour
set cntrlabel format '%8.3g' font '' start 5 interval 20
set mapping cartesian
set datafile separator whitespace
unset hidden3d
set cntrparam order 4
set cntrparam linear
set cntrparam levels 5
set cntrparam levels auto
set cntrparam firstlinetype 0 unsorted
set cntrparam points 5
set size ratio 0 1,1
set origin 0,0
set style data points
set style function lines
unset xzeroaxis
unset yzeroaxis
unset zzeroaxis
unset x2zeroaxis
unset y2zeroaxis
set xyplane relative 0.5
set tics scale 1, 0.5, 1, 1, 1
set mxtics default
set mytics default
set mztics default
set mx2tics default
set my2tics default
set mcbtics default
set mrtics default
set nomttics
set xtics border in scale 1,0.5 mirror norotate autojustify
set xtics norangelimit autofreq
set ytics border in scale 1,0.5 mirror norotate autojustify
set ytics norangelimit autofreq
set ztics border in scale 1,0.5 nomirror norotate autojustify
set ztics norangelimit autofreq
unset x2tics
unset y2tics
set cbtics border in scale 1,0.5 mirror norotate autojustify
set cbtics norangelimit autofreq
set rtics axis in scale 1,0.5 nomirror norotate autojustify
set rtics norangelimit autofreq
unset ttics
set title ""
set title font "" textcolor lt -1 norotate
set timestamp bottom
set timestamp ""
set timestamp font "" textcolor lt -1 norotate
set trange [ * : * ] noreverse nowriteback
set urange [ * : * ] noreverse nowriteback
set vrange [ * : * ] noreverse nowriteback
set xlabel ""
set xlabel font "" textcolor lt -1 norotate
set x2label ""
set x2label font "" textcolor lt -1 norotate
set xrange [ * : * ] noreverse writeback
set x2range [ * : * ] noreverse writeback
set ylabel ""
set ylabel font "" textcolor lt -1 rotate
set y2label ""
set y2label font "" textcolor lt -1 rotate
set yrange [ * : * ] noreverse writeback
set y2range [ * : * ] noreverse writeback
set zlabel ""
set zlabel font "" textcolor lt -1 norotate
set zrange [ * : * ] noreverse writeback
set cblabel ""
set cblabel font "" textcolor lt -1 rotate
set cbrange [ * : * ] noreverse writeback
set rlabel ""
set rlabel font "" textcolor lt -1 norotate
set rrange [ * : * ] noreverse writeback
unset logscale
unset jitter
set zero 1e-08
set lmargin -1
set bmargin -1
set rmargin -1
set tmargin -1
set locale "English_India.1252"
set pm3d explicit at s
set pm3d scansautomatic
set pm3d interpolate 1,1 flush begin noftriangles noborder corners2color mean
set pm3d nolighting
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
set palette rgbformulae 7, 5, 15
set colorbox default
set colorbox vertical origin screen 0.9, 0.2 size screen 0.05, 0.6 front noinvert bdefault
set style boxplot candles range 1.50 outliers pt 7 separation 1 labels auto unsorted
set loadpath
set fontpath
set psdir
set fit brief errorvariables nocovariancevariables errorscaling prescale nowrap v5
GNUTERM = "windows"
## Last datafile plotted: "EPAM_2000_160_CUT.txt"
plot "EPAM_2000_160_CUT.txt" u 1:2 t '0.047-0.068 MeV' , "EPAM_2000_160_CUT.txt" u 1:3 t'0.068-0.115 MeV' , "EPAM_2000_160_CUT.txt" u 1:4 t'0.115-0.195 MeV' , "EPAM_2000_160_CUT.txt" u 1:5 t'0.195-0.321 MeV'
# EOF

gnuplot label specific y data point with x value

How can I label a datapoint on a specific y value with its corresponding x value? Extra difficulty is the x values should be in hours and not date.
I have this data:
data.csv:
2019-01-04-11:02:24,1.468
2019-01-04-12:40:54,1.212
2019-01-04-15:16:22,1.123
2019-01-04-17:04:43,1.067
2019-01-04-18:51:45,0.994
2019-01-04-19:51:21,0.919
2019-01-04-20:46:40,0.8
I plot it with:
set datafile separator ","
set terminal png size 600,300 enhanced font 'Verdana,10' linewidth 1
set output 'data.png'
set xdata time
MyTimeFormat = "%Y-%m-%d-%H:%M:%S"
set timefmt MyTimeFormat
set format x "%tH"
set xlabel "hours"
set ylabel "Volt"
set grid ytics xtics mxtics
StartTime = strptime(MyTimeFormat,"2019-01-04-11:01:31")
EndTime = strptime(MyTimeFormat,"2019-01-04-20:47:17")
plot 'data.csv' u (timecolumn(1)-StartTime):2 w lines lw 1 notitle,\
'' u (timecolumn(1)-StartTime):2:1 w labels notitle
That gives this plot:
Lets assume I am interested in displaying a single y value 0.89. How can I label the intersection on the plot with the corresponding x value in hours, like in this plot:
I know the problem is that point does not exist in my data but is this possible anyway? If not, how to do it with an existing y value near the desired value for example this value:
2019-01-04-19:51:21,0.919
Check the following. The ternary operator helps you here.
The label of the first value which is below a certain threshold is plotted as label.
Of course, it would be nicer interpolate the value at the threshold, which also can be done but requires some more coding.
### threshold value as label
reset session
$Data <<EOD
2019-01-04-11:02:24,1.468
2019-01-04-12:40:54,1.212
2019-01-04-15:16:22,1.123
2019-01-04-17:04:43,1.067
2019-01-04-18:51:45,0.994
2019-01-04-19:51:21,0.919
2019-01-04-20:46:40,0.8
EOD
set datafile separator ","
#set terminal png size 600,300 enhanced font 'Verdana,10' linewidth 1
#set output 'data.png'
set xdata time
MyTimeFormat = "%Y-%m-%d-%H:%M:%S"
set timefmt MyTimeFormat
set format x "%tH"
set xlabel "hours"
set ylabel "Volt"
set grid ytics xtics mxtics
StartTime = strptime(MyTimeFormat,"2019-01-04-11:01:31")
EndTime = strptime(MyTimeFormat,"2019-01-04-20:47:17")
set multiplot layout 2,1
OffsetY = 0.1
plot $Data u (timecolumn(1)-StartTime):2 w lp lt 7 lc rgb "red" notitle,\
'' u (timecolumn(1)-StartTime):($2+OffsetY):(sprintf("%.2f",(timecolumn(1)-StartTime)/3600)) w labels notitle
Threshold = 1.1
a = NaN
Flag = 1
plot $Data u (timecolumn(1)-StartTime):2 w lp lt 7 lc rgb "blue" notitle,\
'' u (a = timecolumn(1)-StartTime):\
($2+OffsetY):\
(($2<Threshold) & (Flag==1) ? (Flag=0, sprintf("%.2f|%g",a/3600,Threshold)) : "") w labels notitle
unset multiplot
### end of code
Which results in:
Addition:
Another improved bit more complex solution finds the point of interest (POI) in a first pass, interpolates and finally adds lines and labels.
### threshold value as label
reset session
$Data <<EOD
2019-01-04-11:02:24,1.468
2019-01-04-12:40:54,1.212
2019-01-04-15:16:22,1.123
2019-01-04-17:04:43,1.067
2019-01-04-18:51:45,0.994
2019-01-04-19:51:21,0.919
2019-01-04-20:46:40,0.8
EOD
set datafile separator ","
# set terminal png size 600,300 enhanced font 'Verdana,10' linewidth 1
# set output 'data.png'
set xdata time
MyTimeFormat = "%Y-%m-%d-%H:%M:%S"
set timefmt MyTimeFormat
set format x "%tH:%tM"
set xlabel "hours"
set ylabel "Volt"
set grid ytics xtics mxtics
# settings
Threshold = 0.89
LabelOffsetY = 0.1
Flag = 0
LastX = LastY = TempX = TempY = POIx = NaN
# formula for interpolation and finding the threshold x value
Interpolate(x0,y0,x1,y1,xi) = y0 + (y1-y0)/(x1-x0)*(xi-x0)
ThresholdX(X,Y) = ((LastY>=Threshold) & (Y<Threshold) & (Flag==0)) ? \
(Flag=1, POIx = Interpolate(LastY,LastX,Y,X,Threshold)) : NaN
set table $Dummy
plot $Data u ($0 == 0 ? (StartTime = timecolumn(1), 0) : LastX = TempX, TempX = timecolumn(1)-StartTime, LastY = TempY, TempY = $2, ThresholdX(TempX,TempY)):\
(TempY) w table
unset table
# lines and label
set arrow 1 from graph 0, first Threshold to POIx,Threshold lc rgb "red" nohead
set arrow 2 from POIx,graph 0 to POIx,Threshold lc rgb "red" nohead
set arrow 3 from POIx,Threshold+LabelOffsetY*0.8 to POIx,Threshold lc rgb "black" lw 1.5
set style textbox opaque
set label 1 at POIx,Threshold+LabelOffsetY sprintf("%.2f/%.2f", POIx/3600, Threshold) boxed front
# plotting data
plot $Data u (timecolumn(1)-StartTime):2 w lp lt 7 lc rgb "blue" notitle
### end of code

Gnuplot gives 2 instead of 24 columns with an other timeformat

I have the next problem. I had an datafile like;
1412481600,304,0,0,0,304,0
1412485200,385,0,0,0,383,0
1412488800,332,0,0,0,331,0
1412492400,359,0,0,0,355,0
I have changed the format to;
08-11-2014-17:00,390,0,27,417
08-11-2014-18:00,474,0,0,474
08-11-2014-19:00,467,0,0,467
08-11-2014-20:00,687,0,0,687
I changed either the gnuplotscript.
First was;
set timefmt x "%s"
To now in;
set timefmt x "%d-%m-%Y-%H:%M"
In the new situation gnuplot gives me 2 columns they are overwrite
with other columns.
What am I doing wrong or I forget ?
Here the working en wrong example;
And this is the complete code;
file = 'uur.txt'
set output "dag.png"
set datafile separator ","
set linestyle 1 lt 1 lc rgb "black"
set bmargin 5 # witruimte onder grafiek
set boxwidth 600 absolute
set style boxplot
set border back
dy=500 # zie y waarde terminal
# Hier worden de maximale en minimale y-waarden van gnuplot bepaald.
set terminal unknown
plot "<tail -24 ".file."" using :(-$5) w p, '' u :4 w p
ymax= GPVAL_Y_MAX
ymin= GPVAL_Y_MIN
ptmax=ymax*dy/(ymax-ymin)
ptmin=ymin*dy/(ymax-ymin)
replot
set terminal pngcairo truecolor enhanced size 1200, 500 font "Courier Bold,10" background rgb "#CFCFFF"
stats "<tail -24 ".file."" using 2:3 nooutput
afnt = STATS_sum_x
gelt = STATS_sum_y
afn = afnt/24
gel = gelt/24
stats "< tail -24 ".file."" using 4:5 nooutput
zon = STATS_max_x
zont = STATS_sum_x
geb = STATS_max_y
gebt = STATS_sum_y
zonavg = STATS_sum_x/24
gebavg = STATS_sum_y/24
stats "<tail -1 ".file."" using (strptime('%d-%m-%y %H:%M', stringcolumn(1))) nooutput
tijd = strftime('%H:%M', STATS_max)
set palette defined (-(geb) "#ee0000", 0 "#0000cc", 0 "#00aa00", (zon) "#ff0000")
unset colorbox
set title 'Alle energie-stromen van de laatste 24 uur.' font "Courier-Bold,12"
set xdata time
set timefmt '%d-%m-%y-%H:%M'
set xtics format "%H:%M" # dit is de opmaak zoals je hem gaat zien
set xtics 3600
set mxtics 0 # zet sub(minor)streepjes op de x-as
set grid ls 1 lw 1 lc rgb "#a0a0a0"
set autoscale xfix
set ytics font "Helvetica,8"
set mytics 2
set y2tics axis out 0
set ylabel "V e r m o g e n in Watt" offset 2,1
set object rect from screen 0.05, screen 0.04 to screen 0.08, screen 0.06 fc rgb '#00B900' front
set object rect from sc 0.05, sc 0.01 to sc 0.08, sc 0.03 fc rgb 'blue' front
set object rect from sc 0.25, sc 0.04 to sc 0.28, sc 0.06 fc rgb 'green'
set object 10 rect from sc 0.25, sc 0.01 to sc 0.28, sc 0.03 fc rgb "red" fs solid 1.0 front
set object 10 rect from sc 0.25, sc 0.01 to sc 0.28, sc 0.03 fc rgb "#5555ff" fs solid 1.0 front
# graph x, y
set label font "Courier Bold, 10" # grootte font tbv labels in het grafiek
set label 1 sprintf("Energiestromen gemiddeld per uur.") at screen 0.05,0.08 tc rgb "black" front
set label 2 sprintf("Zon = %4.0f W/h",zonavg) at screen 0.085,0.05 front
set label 3 sprintf("Gebruikt = %4.0f W/h",gebavg) at screen 0.085,0.025 front
set label 4 sprintf("Geleverd = %4.0f W/h",gel) at screen 0.285,0.05 front
set label 5 sprintf("Afgenomen = %4.0f W/h",afn) at screen 0.285,0.025 front
set label 6 sprintf("Energiestromen van de afgelopen 24 uur.") at screen 0.5,0.08 front
set label 7 sprintf("Gebruikt (%dW) = zon (%dW) - geleverd (%dW) + afgenomen (%dW)", gebt, zont, gelt, afnt) at screen 0.5,0.05 tc rgb "black" front
set label 11 sprintf("Logtijd: ") at screen 0.05,0.92 font "Courier-Bold,8" front
set label 12 sprintf(tijd) at screen 0.091,0.92 font "Courier-Bold,8" front
set style fill solid noborder# was transparent solid 0.5 border 0.5
n = 51
# n is het aantal kolommen wat wordt opgebouwd teneinde een gradient te krijgen. Hoe hoger "n" des te vloeiender de gradient
# De 1e serie is zon, de 2e serie is geleverd, de 3e serie is gebruik en de 4e serie is afgenomen.
# Het getal 12 is het aantal punten van één karakter Courier-Bold 10 hetgeen hier is gebruikt voor de labels.
plot for [i=n:0:-1] "<tail -24 ".file."" u ($1-600):(($4/n)*i):(($4/n)*i) w boxes lc palette notitle,\
"<tail -24 ".file."" u ($1-600):4:( $4>0 && ($4/ymax*ptmax)> (12 * strlen(sprintf("%d", $4))) ? $4 : sprintf("")) w labels right rotate font ",10" tc rgb "white" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u ($1-600):4:( $4>0 && ($4/ymax*ptmax)<=(12 * strlen(sprintf("%d", $4))) ? $4 : sprintf("")) w labels left rotate font ",10" tc rgb "black" offset 0,0.1 notitle,\
"<tail -24 ".file."" u ($1-600):4 w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u ($1+600):3 w boxes lt 1 lc rgb "green" fillstyle solid notitle,\
"<tail -24 ".file."" u ($1+600):3 w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u ($1+600):3:( $3>0 && ($3/ymax*ptmax)> (12 * strlen(sprintf("%d", $3))) ? $3 : sprintf("")) w labels right rotate font ",10" tc rgb "blue" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u ($1+600):3:( $3>0 && ($3/ymax*ptmax)<=(12 * strlen(sprintf("%d", $3))) ? $3 : sprintf("")) w labels left rotate font ",10" tc rgb "black" offset 0,0.1 notitle,\
for [i=n:0:-1] "<tail -24 ".file."" u ($1-600):((-($5)/n)*i):((-($5)/n)*i) w boxes lc palette notitle,\
"<tail -24 ".file."" u ($1-600):(-$5):( $5>0 && ($5/ymax*ptmax)> (12 * strlen(sprintf("%d", $5))) ? -$5 : sprintf("")) w labels left rotate font ",10" tc rgb "white" offset 0,0.1 notitle,\
"<tail -24 ".file."" u ($1-600):(-$5):( $5>0 && ($5/ymax*ptmax)<=(12 * strlen(sprintf("%d", $5))) ? -$5 : sprintf("")) w labels right rotate font ",10" tc rgb "black" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u ($1-600):(-$5) w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u ($1+600):(-$2) w boxes lc rgb "#5555ff" fillstyle solid notitle,\
"<tail -24 ".file."" u ($1+600):(-$2) w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u ($1+600):(-$2):( $2>0 && ($2/ymax*ptmax)> (12 * strlen(sprintf("%d", $2))) ? -$2 : sprintf("")) w labels left rotate font ",10" tc rgb "white" offset 0,0.1 notitle,\
"<tail -24 ".file."" u ($1+600):(-$2):( $2>0 && ($2/ymax*ptmax)<=(12 * strlen(sprintf("%d", $2))) ? -$2 : sprintf("")) w labels right rotate font ",10" tc rgb "black" offset 0,-0.1 notitle
The complete datafile can you find here: http://ccvd.eu/downloads/uur.txt
There are two problems: First you must use the correct time format %d-%m-%Y-%H:%M in all cases (in the script you posted, you have a small y, and in the stats command you are missing a dash).
And, second, you must use timecolumn(1) instead of $1 in the using statement in order to have the date parsed correctly. When you had a timestamp, it worked fine since it was only a number, but parsing of the string failed. So your complete script should be
file = 'uur.txt'
set output "dag.png"
set datafile separator ","
set linestyle 1 lt 1 lc rgb "black"
set bmargin 5 # witruimte onder grafiek
set boxwidth 600 absolute
set style boxplot
set border back
dy=500 # zie y waarde terminal
# Hier worden de maximale en minimale y-waarden van gnuplot bepaald.
set terminal unknown
plot "<tail -24 ".file."" using :(-$5) w p, '' u :4 w p
ymax= GPVAL_Y_MAX
ymin= GPVAL_Y_MIN
ptmax=ymax*dy/(ymax-ymin)
ptmin=ymin*dy/(ymax-ymin)
replot
set terminal pngcairo truecolor enhanced size 1200, 500 font "Courier Bold,10" background rgb "#CFCFFF"
stats "<tail -24 ".file."" using 2:3 nooutput
afnt = STATS_sum_x
gelt = STATS_sum_y
afn = afnt/24
gel = gelt/24
stats "< tail -24 ".file."" using 4:5 nooutput
zon = STATS_max_x
zont = STATS_sum_x
geb = STATS_max_y
gebt = STATS_sum_y
zonavg = STATS_sum_x/24
gebavg = STATS_sum_y/24
stats "<tail -1 ".file."" using (strptime('%d-%m-%Y-%H:%M', stringcolumn(1))) nooutput
tijd = strftime('%H:%M', STATS_max)
set palette defined (-(geb) "#ee0000", 0 "#0000cc", 0 "#00aa00", (zon) "#ff0000")
unset colorbox
set title 'Alle energie-stromen van de laatste 24 uur.' font "Courier-Bold,12"
set xdata time
set timefmt '%d-%m-%Y-%H:%M'
set xtics format "%H:%M" # dit is de opmaak zoals je hem gaat zien
set xtics 3600
set mxtics 0 # zet sub(minor)streepjes op de x-as
set grid ls 1 lw 1 lc rgb "#a0a0a0"
set autoscale xfix
set ytics font "Helvetica,8"
set mytics 2
set y2tics axis out 0
set ylabel "V e r m o g e n in Watt" offset 2,1
set object rect from screen 0.05, screen 0.04 to screen 0.08, screen 0.06 fc rgb '#00B900' front
set object rect from sc 0.05, sc 0.01 to sc 0.08, sc 0.03 fc rgb 'blue' front
set object rect from sc 0.25, sc 0.04 to sc 0.28, sc 0.06 fc rgb 'green'
set object 10 rect from sc 0.25, sc 0.01 to sc 0.28, sc 0.03 fc rgb "red" fs solid 1.0 front
set object 10 rect from sc 0.25, sc 0.01 to sc 0.28, sc 0.03 fc rgb "#5555ff" fs solid 1.0 front
# graph x, y
set label font "Courier Bold, 10" # grootte font tbv labels in het grafiek
set label 1 sprintf("Energiestromen gemiddeld per uur.") at screen 0.05,0.08 tc rgb "black" front
set label 2 sprintf("Zon = %4.0f W/h",zonavg) at screen 0.085,0.05 front
set label 3 sprintf("Gebruikt = %4.0f W/h",gebavg) at screen 0.085,0.025 front
set label 4 sprintf("Geleverd = %4.0f W/h",gel) at screen 0.285,0.05 front
set label 5 sprintf("Afgenomen = %4.0f W/h",afn) at screen 0.285,0.025 front
set label 6 sprintf("Energiestromen van de afgelopen 24 uur.") at screen 0.5,0.08 front
set label 7 sprintf("Gebruikt (%dW) = zon (%dW) - geleverd (%dW) + afgenomen (%dW)", gebt, zont, gelt, afnt) at screen 0.5,0.05 tc rgb "black" front
set label 11 sprintf("Logtijd: ") at screen 0.05,0.92 font "Courier-Bold,8" front
set label 12 sprintf(tijd) at screen 0.091,0.92 font "Courier-Bold,8" front
set style fill solid noborder# was transparent solid 0.5 border 0.5
n = 51
# n is het aantal kolommen wat wordt opgebouwd teneinde een gradient te krijgen. Hoe hoger "n" des te vloeiender de gradient
# De 1e serie is zon, de 2e serie is geleverd, de 3e serie is gebruik en de 4e serie is afgenomen.
# Het getal 12 is het aantal punten van één karakter Courier-Bold 10 hetgeen hier is gebruikt voor de labels.
plot for [i=n:0:-1] "<tail -24 ".file."" u (timecolumn(1)-600):(($4/n)*i):(($4/n)*i) w boxes lc palette notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):4:( $4>0 && ($4/ymax*ptmax)> (12 * strlen(sprintf("%d", $4))) ? $4 : sprintf("")) w labels right rotate font ",10" tc rgb "white" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):4:( $4>0 && ($4/ymax*ptmax)<=(12 * strlen(sprintf("%d", $4))) ? $4 : sprintf("")) w labels left rotate font ",10" tc rgb "black" offset 0,0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):4 w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):3 w boxes lt 1 lc rgb "green" fillstyle solid notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):3 w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):3:( $3>0 && ($3/ymax*ptmax)> (12 * strlen(sprintf("%d", $3))) ? $3 : sprintf("")) w labels right rotate font ",10" tc rgb "blue" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):3:( $3>0 && ($3/ymax*ptmax)<=(12 * strlen(sprintf("%d", $3))) ? $3 : sprintf("")) w labels left rotate font ",10" tc rgb "black" offset 0,0.1 notitle,\
for [i=n:0:-1] "<tail -24 ".file."" u (timecolumn(1)-600):((-($5)/n)*i):((-($5)/n)*i) w boxes lc palette notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):(-$5):( $5>0 && ($5/ymax*ptmax)> (12 * strlen(sprintf("%d", $5))) ? -$5 : sprintf("")) w labels left rotate font ",10" tc rgb "white" offset 0,0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):(-$5):( $5>0 && ($5/ymax*ptmax)<=(12 * strlen(sprintf("%d", $5))) ? -$5 : sprintf("")) w labels right rotate font ",10" tc rgb "black" offset 0,-0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)-600):(-$5) w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):(-$2) w boxes lc rgb "#5555ff" fillstyle solid notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):(-$2) w boxes lc rgb "black" fill empty notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):(-$2):( $2>0 && ($2/ymax*ptmax)> (12 * strlen(sprintf("%d", $2))) ? -$2 : sprintf("")) w labels left rotate font ",10" tc rgb "white" offset 0,0.1 notitle,\
"<tail -24 ".file."" u (timecolumn(1)+600):(-$2):( $2>0 && ($2/ymax*ptmax)<=(12 * strlen(sprintf("%d", $2))) ? -$2 : sprintf("")) w labels right rotate font ",10" tc rgb "black" offset 0,-0.1 notitle
with the expected output of

Ternary operator with loop structure in gnuplot

I'm trying the following in gnuplot:
y(i,x) = i*x
plot for [i=1:10:1] i==1 ? y(i,x) lc rgb "red" title "retas": y(i,x) lc rgb "red" notitle
but it gives the following error:
gnuplot> plot for [i=1:10:1] i==1 ? y(i,x) lc rgb "red" title 'retas' : y(i,x) lc rgb "red" notitle
^
expecting ':'
And adding parenthesis doesn't help.
I know that I can reach the result using this:
plot for [i=1:10:1] i==1 ? 1/0 : y(i,x) lc rgb "red" notitle, y(1,x) lc rgb "red" title "retas"
but why doesn't the first command work?
You can wrap in a ternary operator construct only some isolated parts of the plotting command:
y(i,x) = i*x
plot for [i=1:10:1] (i==1 ? y(i,x) : alt(i, x)) lc rgb "red" title (i == 1 ? "retas" : "")

Resources