I teach intro computer science classes, and I like to do so using 2D graphics. I've been using John Zelle's excellent graphics.py library, but I want to migrate to using Jupyter with my students so I need a new graphics solution. This needs to be accessible to students as early as 8th grade with no programming experience.
All I'm looking for is basic rectangle/ellipse/arc/polygon/line functionality, with the ability to control stroke and fill colors. Plus image import. But I want the API to be as simple as possible.
- matplotlib is the obvious choice, but the syntax is kind of messy and it wants to be used for graphing, so it takes some extra steps to clean things up into a basic drawing screen.
- toyplot is a simplified and prettier matplotlib, but as far as I can tell it doesn't include basic shapes, it's only for charting/plotting
- The vincent API is about as clean as I could ask for (although I'll ask for more anyway...see below) but it doesn't support arbitrary shapes, just charting/plotting
- svg can do everything I want but the syntax is overly complicated for beginners
- ditto for d3 via javascript magics
Although I'd be content if vincent had basic shapes, after working with graphics.py for a while I think I'd prefer something that doesn't use objects. The Processing3 api is probably the ideal, in that (for example) you call a rectangle() function, which uses the current stroke and fill settings, rather than create a Rectangle object, set its properties, and then tell it to draw itself. (Yes, I personally prefer the latter, but I find that it just adds a layer of confusion for beginners.)
So...what options am I missing?