Hey John,
The way that the bar graphs are implemented are by drawing rectangles which takes in the parameters x_min, x_max, y_min and y_max. Which are the minimum and maximum co-ordinates of a rectangle. The thing about bar graph is that their base has to be set on the bottom of graph. (For a candlestick plot the roof of the graph needs to be on top ).
However the bottom and the top of the graph are decided when figures are plotting (in case user would like to make multiple plots on graph)
So suppose user passes
a = Rubyplot::Figure.new
a.bar([10, 20,30])
So me will push a command to the task list to draw rectangles with the base of y axis just set below 10
(some padding is added , you do not want bar with zero height)
Then if user wants another bar graph to be created over this graph he will add.
a.bar([-5, 0,60])
a.view
In this case the base of y axis would be set below -5 .So our previous bars would be hanging in the air.Same can be imagined for a candle graph.
Thus the idea of lazy plots. They are the types of plots who whise have certain parameters that are decided by certain state variable of a figure (say the base of y axis) and thus the parameters are called when they are called from the tasks list.
They are called lazy because they pass parameters to the GR functions at the when they are called rather than when they are instantiated.
So in a nutshell in robust plots the only depend on the data provided to them, Whereas Lazy plots depend on data provided to them and the state of the Figure.
Regards
PG