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
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
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
How can I scale the colorbar axis of a false color image?
I read this post,and copied the code but it seems not to work correctly:
MATLAB Colorbar - Same colors, scaled values
Please see the two images below. In the first (without the scaling) the coloraxis goes
[1 2 3 4 5 6]*10^4
In the second image, it goes
[0.005 0.01 0.015 0.02 0.025]
The correct scaling (with C = 100000) would be
[0.1 0.2 0.3 0.4 0.5 0.6]
Without scaling
Wrong scaling
I want that the coloraxis is scaled by 1/C and I can freely choose C, so that when the pixel value = 10^4 and C=10^6 the scale should show 10^-2.
The reason why I multiply my image first by C is to get more decimals places, because all values below 1 will be displayed as zero without the C scaling.
When I run the code I get yticks as a workspace variable with the following values:
[500 1000 1500 2000 2500]
My code:
RGB = imread('IMG_0043.tif');% Read Image
info = imfinfo('IMG_0043.CR2'); % get Metadata
C = 1000000; % Constant to adjust image
x = info.DigitalCamera; % get EXIF
t = getfield(x, 'ExposureTime');% save ExposureTime
f = getfield(x, 'FNumber'); % save FNumber
S = getfield(x, 'ISOSpeedRatings');% save ISOSpeedRatings
date = getfield(x,'DateTimeOriginal');
I = rgb2gray(RGB); % convert Image to greyscale
K = 480; % Kamerakonstante(muss experimentel eavaluiert werden)
% N_s = K*(t*S)/power(f,2))*L
L = power(f,2)/(K*t*S)*C; %
J = immultiply(I,L); % multiply each value with constant , so the Image is Calibrated to cd/m^2
hFig = figure('Name','False Color Luminance Map', 'ToolBar','none','MenuBar','none');
% Create/initialize default colormap of jet.
cmap = jet(16); % or 256, 64, 32 or whatever.
% Now make lowest values show up as black.
cmap(1,:) = 0;
% Now make highest values show up as white.
cmap(end,:) = 1;
imshow(J,'Colormap',cmap) % show Image in false color
colorbar % add colorbar
h = colorbar; % define colorbar as variable
y_Scl = (1/C);
yticks = get(gca,'YTick');
set(h,'YTickLabel',sprintfc('%g', [yticks.*y_Scl]))
ylabel(h, 'cd/m^2')% add unit label
title(date); % Show date in image
caxis auto % set axis to auto
datacursormode on % enable datacursor
img = getframe(gcf);
nowstr = datestr(now, 'yyyy-mm-dd_HH_MM_SS');
folder = 'C:\Users\Taiko\Desktop\FalseColor\';
ImageFiles = dir( fullfile(folder, '*.jpg') );
if isempty(ImageFiles)
next_idx = 1;
else
lastfile = ImageFiles(end).name;
[~, basename, ~] = fileparts(lastfile);
file_number_str = regexp('(?<=.*_)\d+$', basename, 'match' );
last_idx = str2double(file_number_str);
next_idx = last_idx + 1;
end
newfilename = fullfile( folder, sprintf('%s_%04d.jpg', nowstr, next_idx) );
imwrite(img.cdata, newfilename);
Problems:
1) You are getting YTick of the figure (gca) but not the color bar. That would give you the "pixel" coordinates of the graph, instead of the actual values. Use yticks = get(h,'YTick');.
2) caxis auto Should come before overwriting YTicks (and after enabling the color bar); otherwise the scale and ticks will mismatch.
3) Do you mean C = 100000?
Result:
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