transform is part of QwtPlotItem. It transforms the data coordinates to paint coordinates:

I still had to create and attach my custom raster data class of course. I made this class so I didn't have recalculate every point just because everything shifted down by one or two pixels.
You may have no problems replotting everything on each update depending on how dense you pack your data. In may case I would have had to reprocess nearly 1GB of data each second after my buffer had filled. I probably should have built my raster data class to create ripmaps, but this image caching worked well enough.
The job of this class was to shift the position of the cached image if needed, and call the default spectrogram draw functions but only for the slivers of data on the sides that really needed to be calculated. So it could potentially help improve your refresh rates later down the line.

As Uwe said, you really do need to get it working for a particular point in time first. So just forget about this class for now
Maybe you don't have your value() function in your raster data class set up right. You can write some quick tests for it.
Is the data getting stretched across the entire plot? Then maybe you need to add a call to setBoundingRect.