You can specify expressions that run on Init, Frame, and on Beat.
'n' specifies the number of points to render (set this in Init, Beat, or Frame).
For the 'Per Point' expression (which happens 'n' times per frame), use:
'x' and 'y' are the coordinates to draw to (-1..1)
'i' is the position of the scope (0..1)
'v' is the value at that point (-1..1).
'b' is 1 if beat, 0 if not.
'red', 'green' and 'blue' are all (0..1) and can be modified
'linesize' can be set from 1.0 to 255.0
'skip' can be set to >0 to skip drawing the current item
'drawmode' can be set to > 0 for lines, <= 0 for points
'w' and 'h' are the width and height of the screen, in pixels.
The idea here is you're given an entire framebuffer to drawn on with your Lua script. That's the image widget.
StarVisuals now uses combat log data if it's available, otherwise it uses random data that's randomized when any combat log event happens.
Edit: I should mention that PluginNoise keeps track of combat log data for each unit seen, otherwise we stick the data in our dummy unit, 'local'. Only 64 records are kept at a time to speed up the data smoothing. We'll see how it plays out, and maybe I'll increase that.