# This Gnuplot file has been generated by eNovance

needed_args = 5
if (exists("ARGC") && ARGC >= needed_args) \
	found_args = 1; \
else if (strlen("$$#") < 3 && "$#" >= needed_args) \
	found_args = 1; \
	ARG1 = "$0"; \
	ARG2 = "$1"; \
	ARG3 = "$2"; \
	ARG4 = "$3"; \
	ARG5 = "$4"; \
else \
	found_args = 0; \
	print "Aborting: could not find all arguments"; \
	exit

set title ARG1

set terminal png size 1280,1024
set output ARG4 . '.png'
#set terminal x11
#3D Config
set isosamples 30
set hidden3d
set pm3d at s solid hidden3d 100 scansbackward
set pm3d depthorder

#Preparing Axes
#set logscale x
set ytics axis out 0,1
#set data style lines
set grid back
set key top left reverse
set ylabel "Disk"
set xlabel "Time (Seconds)"
set zlabel ARG5
set cbrange [0:]
set zrange [0:]

#Set Color style
#set palette rgbformulae 22,9,23
set palette rgbformulae 7,5,15
set style line 100 lt 7 lw 0.5

#Multiploting
set multiplot

#Top Left View
set size 0.5,0.5
set view 64,216
set origin 0,0.5
splot ARG2 using 2:1:3 with linespoints title ARG3

#Top Right View
set size 0.5,0.5
set origin 0.5,0.5
set view 90,0
set pm3d at s solid hidden3d 100 scansbackward
set pm3d depthorder
splot ARG2 using 2:1:3 with linespoints title ARG3

#Bottom Right View
set size 0.5,0.5
set origin 0.5,0
set view 63,161
set pm3d at s solid hidden3d 100 scansbackward
set pm3d depthorder
splot ARG2 using 2:1:3 with linespoints title ARG3

#Bottom Left View
set size 0.5,0.5
set origin 0,0
set pm3d map
splot ARG2 using 2:1:3 with linespoints title ARG3

#Unsetting multiplotting
unset multiplot
#pause -1

#Preparing 3D Interactive view
set mouse
set terminal png size 1024,768
set output ARG4 . '-3D.png'

#set term x11
set view 64,216
set origin 0,0
set size 1,1
set pm3d at bs solid hidden3d 100 scansbackward
set pm3d depthorder
splot ARG2 using 2:1:3 with linespoints title ARG3

#pause -1
#The End
