Most "Canvas" widgets in common GUI toolkits offer low level operations like drawing basic shapes of different colors/line-width/etc, or displaying sprites and images. Some seem to have slightly more advanced features like the ability to treat primitives drawn on the canvas as "actors" so they can be moved and manipulated independently after drawing.
How do you go from such low-level operations to highly complex and interactive visualizations, for example the Integrative Genomics Viewer (screenshot 1, screenshot 2, screenshot 3)? This tool lets you navigate various annotations and features located on a genome in a variety of ways, at the single-nucleotide level (ie, very low detail) to the whole-genome level (very high level overviews), handles very large data sets (100's of gb) and incorporates many different plot types many of which are unique to the application or at least bioinformatics.
Beyond MVC, is there underlying theory or model as to how you should structure such an application?