Re: Printing multiple panels + multiple axis labels
Brought to you by:
rathmann
From: Gerard V. <ger...@gr...> - 2004-08-23 16:16:10
|
On Mon, 23 Aug 2004 15:02:31 +0200 Stein Haaland <Ste...@is...> wrote: > > > a) Printing multiple panels: > I have a plot consisting of several panels, each is a qwtplot > What is the best solution to print all panels on a single page ? > The QwtPlot::print() function prints a single panel and spits out > the page as far as I can see. > It is straightforward to write your own print function which prints an for instance an NxM array of plots by wrapping void QwtPlot::print(QPainter *painter, const QRect &plotRect, const QwtPlotPrintFilter &pfilter) const in a function which prints each plot in its own rectangle on a paper. The hard part is to make the scales line up, because the canvas layout depends on how much is left over after the title and scales have been layed out. > > b) Multiple axis labels : > Is there an easy way to add multiple axis labels, i.e., two or more > lines with axis labels. For my purpose I need both time and a > position along the x-axis > > > An illustration (76kB *.png) showing this latter feature : > http://www.issi.unibe.ch/~haaland/qwt/panels.png > > Code snips with my multi-panel declarations can be found on ; > http://www.issi.unibe.ch/~haaland/qwt/mpzoom.h > http://www.issi.unibe.ch/~haaland/qwtmpzoomplot.h > > > sys = qwt 0.4.2, linux mdk 9.x, qt 3.3.0 > You can draw a scale directly on paper using a QwtScaleDraw. Again, you have to figure out how to match the extra scales with the scale that is printed with the QwtPlot: realize that the QwtScaleDraw used to draw the QwtScale of the QwtPlot is also an QwtDiMap. This gives you the pixel coordinates of the QwtScale of the QwtPlot and you can use that information to set the geometry of the QwtScaleDraws that you will use for the extra scales. Gerard |