fgplot links can be found on the forum - I don't think it's worth it to look at its code, your own code is much better structured meanwhile, I remember looking at fgplot and hardly being able to make heads and tails of it. These days, it would not be such a bad idea to refactor the code to use Torsten's addon framework. Other than that, I am not sure if there is much to be gained from looking at the fgplot code - I do recall that we posted a few optimizations tips to make plotting faster though.
Regarding your code - I think you are making this more complicated than needed, and than currently possible - because all the PropertyBased inheritance stuff isn't really supported by the Canvas system to actually implement elements in scripting space - so, you'd primarily need just a function that takes a group handle and renders into that, a simple helper class should do - i.e. using a constructor in the form of new(group) - where the caller specifies the group to be used for the 2D plot.
Equally, I would not let the plot2D helper class handle its own window/canvas creation - once you think about it, different people/aircraft developers may have different use-cases in mind - for instance, the G1000 is creating its own Canvas and and its own Window - thus, it makes more sense to merely deal with the Canvas at the element/group level, and let the higher level code decide what canvas/window is to be used.
Once you do away with all the window/canvas handling stuff in your example, you end up with just a helper class that renders to a configurable canvas group - and that's really all that is needed.
That is also why the MapStructure/NavDisplay code can be told to render to different front-ends, because it's not trying to do too many things at once