Paul, one for you to look at time permitting.
When using %[link=columns], if the range of the y data is such that the value for y_min automatically selected by %pl is not 0 for scale=linear, or 1 for scale=log_linear, a rather messy plot is produced, with the columns extending into the margins.
This is easily fixed if y_min is explicitly set by the programmer – in which case the columns are “clipped” at y_min.
New users, might conclude the link=columns does not work correctly if their data generates plots similar to Graph 2 and Graph 4 produced by the code below:
program ex18
use clrwin
implicit none
integer, parameter :: n = 20
real*8 :: x(n), y2(n)
integer :: i, iw
x = [(i,i=1,n)]
y2 = 100.d0/x
print*, minval(y2), 10.d0**floor(log10(minval(y2)))
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=linear]')
call winop@('%pl[Title='Graph 1']')
iw = winio@('%pl&',300,300,n,x,y2)
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=linear]')
call winop@('%pl[Title='Graph 2']')
iw = winio@('%pl&',300,300,5,x,y2(1:5))
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=linear,y_min=19]')
call winop@('%pl[Title='Graph 3']')
iw = winio@('%pl&',300,300,5,x,y2(1:5))
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=log_linear]')
call winop@('%pl[Title='Graph 4']')
iw = winio@('%ff%pl&',300,300,n,x,y2)
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=log_linear,y_min=0.1]')
call winop@('%pl[Title='Graph 5']')
iw = winio@('%pl&',300,300,n,x,y2)
call winop@('%pl[n_graphs=1,frame,width=5,x_array]')
call winop@('%pl[link=columns,scale=log_linear,y_min=4.9]')
call winop@('%pl[Title='Graph 6']')
iw = winio@('%pl',300,300,n,x,y2)
end program ex18