1,2. You almost have it. Most of your problems are due to a graph configuration issue - the graph is ignoring your waveform timestamp. To fix this problem, pop-up on the graph and select Ignore Timestamp. This will deselect this option, but it will also reformat your X axis. You now need to pop-up on the graph X-axis, select Formatting... and reset to what you would like. This is a personal preference, but I tend to like SI notation with 6 significant digits and hide trailing zeros.
But you are still not finished. The reason the graph ignores timestamps by default is that timestamps are, by default, the absolute time in seconds from January 1, 1904 12:00 midnight GMT. This doesn't do you a whole lot of good. You want to know what the time from your reference position is. This is a relative timestamp. On your fetch VI, create a constant on the timestamp type input and set it to relative. At this point, things should work the way you expect them to.
You can set the time/div by using the Increment property of the graph scale (XScale->Range->Increment). Make sure you set it after setting the max and min values. LabVIEW has “intelligence” which resets the increment value for you based on the size of your labels and how much screen space you have when you set the max and min values or resize the graph. If you don't get what you expect, this may be the reason.
3. If you lock the cursor to the waveform, it will always rest on a point in the waveform. Since the point positions move every time you get a new waveform, this results in jitter. The SFP does not lock the cursor to the waveform and sets it like you have currently done. That way it is stable. Note that the reference position will usually NOT have a point on it.
4,5. You almost have the Y-axis, as well. I am not really sure why what you have done is not working. It appears to be OK. However, try doing it just a bit different. Don't use the YScale.Offset on the waveform graph property. Instead, add the offset to the values you set for the min and max. You may also try wiring the min value to YScale.Start in addition to min. You should be able to implement V/div using Increment. That is how the SFP does it. Be aware, however, that if you use standard scope increments, the vertical range will not line up well with the physical vertical ranges of the device. The SFP gets around this problem by using an IVI feature of NI-SCOPE. If you ask for a range that is not a valid value for the device, it gives you the next highest range which is. To get the graph to look like a scope, you will need to pick max, min, and inc values which are consistent with each other.
As a freebie, I have attached some code to generate the standard scope 1, 2, 5 sequences for you (LV6.0, I think).