Hello! I'm a computer scientist with a similar problem, I also have to plot a lot of data in 2D and 3D for experimentation and presentation. After walking down this road for a while and not finding anything overly convincing, I ended up implementing my own little "framework" based on QPainter for 2D plotting and OpenGL for 3D plotting. Since I always plot graphs of time sequenced data, all I needed for 2D plotting is a QPainter and drawing lines. I made it as fast as can be by culling data that is not on the screen, and skipping lines that would draw into the same pixel as previously drawn lines. I added a few features for scaling and translating the plot widget and individual curves, and have been happily using this nifty little tool now for five years with almost no changes to the code. For generating PDFs and plots of conference papers, I export the relevant data and use gnuplot. For 3D plotting I use libQGLViewer to set up a camera-manipulatable plotting environment, and write OpenGL code for pretty much every individual plot. This doesn't take much time, say one hour development time per plot, not significantly more than you would need when using the interface of a well documented library. In my case I find that 3D plots are usually individual to the problem and most of the time spent on them is lost in thinking about what actually one wants to see, and what one does not, in order to be able to read conclusions out of a plot. Drawing points, lines, spheres, or quadrangles in OpenGL is pretty easy, it is the things around it (setting up a window and the OpenGL environment) that may be challenging for a beginner.