QwtPlot擁有4個axes(軸線)
yLeft | Y axis left of the canvas. |
yRight | Y axis right of the canvas. |
xBottom | X axis below the canvas. |
xTop | X axis above the canvas. |
常用函數接口
setAxisTitle | 設置軸標題 |
enableAxis | 主要是顯示xTop,yRight座標軸 |
setAxisMaxMajor | 設置某個某個座標軸擴大比例尺的最大間隔數目 |
setAxisMaxMinor | 設置某個某個座標軸縮小比例尺的最大間隔數目 |
setAxisScale | 禁用自動縮放比例尺,爲某個座標軸指定一個修改的比例尺 |
insertLegend | 添加圖例(標註) |
常用組件
QwtPlotCurve | 曲線 |
QwtPlotMarker | 標記 |
QwtPlotGrid | 網格 |
QwtPlotHistogram | 直方圖 |
other | 從QwtPlotItem繼承的組件 |
QwtPlotItem | plot能顯示的類,如果想要實現自己繪畫圖形,要繼承此類實現rtti和draw接口 |
QwtPlotPanner | 平移器 (用鼠標左鍵平移) |
QwtPlotMagnifier | 放大器 (用鼠標滾輪縮放) |
QwtPlotCanvas | 畫布 |
QwtScaleMap | 比例圖---可以提供一個邏輯區域到實際區域的座標轉換 |
QwtScaleWidget | 比例窗口 |
QwtScaleDiv | 比例佈局 |
QwtLegent | 標註 |
QwtPlotLayout | 佈局管理器 |
QwtScaleDraw | 自畫座標軸 |
QwtPlotCure簡介
setPen | 設置畫筆 |
setData | 設置曲線的數據 |
setStyle | 設置曲線形式,點、直線、虛線等等 |
setCurveAttribute | 設置曲線屬性,一般設置Fitted |
attch | 把曲線附加到QwlPlot上 |
- #include <QtGui/QApplication>
- #include <Qt/qmath.h>
- #include <QVector>
- #include <qwt_plot.h>
- #include <qwt_plot_curve.h>
- #include <qwt_plot_magnifier.h>
- #include <qwt_plot_panner.h>
- #include <qwt_legend.h>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- QwtPlot plot(QwtText("CppQwtExample1"));
- plot.resize(640,400);
- //設置座標軸的名稱
- plot.setAxisTitle(QwtPlot::xBottom, "x->");
- plot.setAxisTitle(QwtPlot::yLeft, "y->");
- //設置座標軸的範圍
- plot.setAxisScale(QwtPlot::xBottom, 0.0, 2.0 * M_PI);
- plot.setAxisScale(QwtPlot::yLeft, -1.0, 1.0);
- //設置右邊標註
- plot.insertLegend(new QwtLegend(), QwtPlot::RightLegend);
- //使用滾輪放大/縮小
- (void) new QwtPlotMagnifier( plot.canvas() );
- //使用鼠標左鍵平移
- (void) new QwtPlotPanner( plot.canvas() );
- //計算曲線數據
- QVector<double> xs;
- QVector<double> ys;
- for (double x = 0; x < 2.0 * M_PI; x+=(M_PI / 10.0))
- {
- xs.append(x);
- ys.append(qSin(x));
- }
- //構造麴線數據
- QwtPointArrayData * const data = new QwtPointArrayData(xs, ys);
- QwtPlotCurve curve("Sine");
- curve.setData(data);//設置數據
- curve.setStyle(QwtPlotCurve::Lines);//直線形式
- curve.setCurveAttribute(QwtPlotCurve::Fitted, true);//是曲線更光滑
- curve.setPen(QPen(Qt::blue));//設置畫筆
- curve.attach(&plot);//把曲線附加到plot上
- plot.show();
- return a.exec();
- }
轉自http://blog.csdn.net/zhx6044/article/details/9114733
學習這個東西方向對了,就對了一半
今天我開始學習基於qt庫的一個開源的繪製2維的統計圖的庫--qwt。
我們畫東西首先要有一個容器,不然都是徒勞,今天我們就介紹這個類--QwtPlot
它繼承自QFrame和QwtPlotDict,QFrame提供一個QWidget的框架,QwtPlotDict爲QwtPlot管理在其中的plot items,就是繪製的項。在QwtPlot上我們可以繪製無限多個的plot items,這些plot items可以是曲線,標記,格子以及繼承自QwtPlotItem的子類。一個QwtPlot可以有四個軸,每個plot item連接到x和y軸上。在軸上的比例變換可以使用QwtScaleDiv,對於plot items比例可以使用QwtScaleEngine來計算,在每個軸上,QwtScaleEngine可以被單獨設置。
在QwtPlot中有兩個枚舉類型。
Axis,軸,5個值,一個QwtPlot除了x和y,還有top和bottom軸,第五個是axisCnt,軸數,枚舉從0開始,第五個爲4,說明一共四個軸。另一個是LegendPosition,圖例的位置。
它有五個值,分別指定插入一個圖例仔什麼位置,四個都是和x和y軸的位置有關,最後一個是特殊的,它允許不在這個Plot中,就是外部的。
這是今天寫的一個小例子