qwt-QwtPlot
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中,就是外部的。
这是今天写的一个小例子
- /************************************************
- *
- *author:周翔
- *e-mail:604487178@qq.com
- *blog:http://blog.csdn.net/zhx6044
- *
- *
- *************************************************/
- #ifndef PLOT_H
- #define PLOT_H
- #include <qwt_plot.h>
- #include <qwt_plot_curve.h>
- #include <qwt_plot_picker.h>
- #include <qwt_plot_panner.h>
- #include <qwt_plot_magnifier.h>
- #include <qwt_legend.h>
- #include <qwt_plot_grid.h>
- #include <qwt_picker_machine.h>
- class Plot : public QwtPlot
- {
- Q_OBJECT
- public:
- explicit Plot(QWidget *parent = 0);
- ~Plot();
- signals:
- public slots:
- private:
- QwtPlotCurve *sinCurve;
- QwtPlotCurve *cosCurve;
- QwtPlotPicker *picker;
- void initCanvas();
- void initAxes();
- void initCurves();
- };
- #endif // PLOT_H
- /************************************************
- *
- *author:周翔
- *e-mail:604487178@qq.com
- *blog:http://blog.csdn.net/zhx6044
- *
- *
- *************************************************/
- #include "plot.h"
- double _sin2(double x)
- {
- return ::sin(2 * x);
- }
- /**
- * @brief The FunctionData class 将一个函数包装一下,就像一个函数对象一样,但是又不一样,没有基于运行符()重载
- * 而是基于多态,我们只需要继承它,实现相关的虚函数即可,它内部有自己的调用规则
- */
- class FunctionData: public QwtSyntheticPointData
- {
- public:
- FunctionData(double(*y)(double)):
- QwtSyntheticPointData(100),
- d_y(y)
- {
- }
- virtual double y(double x) const
- {
- return d_y(x);
- }
- private:
- double(*d_y)(double);
- };
- Plot::Plot(QWidget *parent) :
- QwtPlot(parent)
- {
- initCanvas();
- }
- Plot::~Plot()
- {
- }
- void Plot::initCanvas()
- {
- //右键拖拽
- (new QwtPlotPanner(this->canvas()))->setMouseButton(Qt::RightButton);
- //y轴在放大的时候,坐标不变化
- (new QwtPlotMagnifier(this->canvas()))->setAxisEnabled(QwtPlot::yLeft,false);
- //一个选择器,十字线,以xBottom和yLeft坐标
- picker = new QwtPlotPicker(QwtPlot::xBottom, QwtPlot::yLeft,
- QwtPlotPicker::CrossRubberBand, QwtPicker::AlwaysOn,
- this->canvas());
- picker->setStateMachine(new QwtPickerDragPointMachine());//拖拽点起作用
- picker->setRubberBandPen(QPen(QColor(Qt::white)));
- picker->setTrackerPen(QColor(Qt::yellow));
- setAutoFillBackground(true);
- this->canvas()->setPalette(QPalette (QColor(Qt::darkCyan)));
- setTitle("sin(x) and cos(x)");
- //这个会根据画板中的图在RightLegend显示一个图例
- insertLegend(new QwtLegend(),QwtPlot::RightLegend);
- QwtPlotGrid *grid = new QwtPlotGrid;//网格
- grid->enableXMin(true);
- grid->setMajPen(QPen(Qt::white, 0, Qt::DotLine));//大格子
- grid->setMinPen(QPen(Qt::gray, 0 , Qt::DotLine));//大格子里的小格子
- grid->attach(this);
- initAxes();
- initCurves();
- }
- void Plot::initAxes()
- {
- setAxisTitle(QwtPlot::yLeft, QObject::trUtf8("y 轴"));
- setAxisScale(QwtPlot::yLeft, -1.0, 1.0);
- setAxisTitle(QwtPlot::xBottom,QObject::trUtf8("x 轴"));
- setAxisScale(QwtPlot::xBottom,-5.0,5.0);
- }
- void Plot::initCurves()
- {
- sinCurve = new QwtPlotCurve("y = sin(2x)");
- //切换渲染提示 启用抗锯齿
- sinCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
- sinCurve->setLegendAttribute(QwtPlotCurve::LegendShowLine);
- sinCurve->setPen(QPen(Qt::yellow));
- sinCurve->attach(this);
- cosCurve = new QwtPlotCurve("y = cos(x)");
- cosCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
- //这个会改变曲线在QwtLegend显示的样式,可以是线,矩形,符号,
- cosCurve->setLegendAttribute(QwtPlotCurve::LegendNoAttribute);
- cosCurve->setPen(QPen(Qt::red));
- cosCurve->attach(this);
- sinCurve->setData(new FunctionData(_sin2));
- cosCurve->setData(new FunctionData(::cos));
- }
qwt-QwtPlot相关推荐
- QWT错误static struct QMetaObject const QwtPlot
使用QWT例子oscilloscope出现如下错误: error LNK2001: unresolved external symbol "public: static struct QMe ...
- Qwt使用之QwtPlot
QwtPlot是用来绘制二维图像的widget.在它的画板上可以无限制的显示绘画组件.绘画组件可以是曲线(QwtPlotCurve).标记(QwtPlotMarker).网格(QwtPlotGrid) ...
- 关于Qwt的使用-QwtPlot
转自:http://blog.csdn.net/zhuyunfei/article/details/51150098 1.新建一个qt新工程,往主界面中拖动一个QwtPlot控件,保存后关闭. ps ...
- Qwt笔记(二)之QwtPlot简单使用
一.前言 文章只是楼主学习过程的记录,不能面面俱到,也不能每个点都讲到,不喜勿喷 二.QwtPlot是啥?? 文档是这样描述的: QwtPlot is a widget for plotting tw ...
- qt中label画圆代表指示灯_【Qt编程】基于QWT的曲线绘制及图例显示操作——有样点的实现功能...
在<QWT在QtCreator中的安装与使用>一文中,我们完成了QWT的安装,这篇文章我们讲讲基础曲线的绘制功能. 首先,我们新建一个Qt应用程序,然后一路默认即可.这时,你会发现总共有: ...
- 使用qwt作曲线图——有网格线背景的画法
创建自己的QwtPlot (1) 增加一个类比如curvePlotWidget,继承自QwtPlot (2)代码示例 1 curvePlotWidget::curvePlotWidget(QW ...
- Qwt中如何在曲线上标定特定点
发现 网上的资料越来越少了,只好自己看着QWT官方的Guidebook,一点点的摸索(手册写的真的有点表意不明) 首先要清楚QwtPlot是个容器类,就像一个画布一样 下面的代码就是在这个plot的为 ...
- qwt自定义时间标尺TimeScale
需要重载QwtScaleDraw类的virtual QwtText label(double)const;方法 该方法在需要绘制scale label时会调用. 主要思路是标尺上的点对应QDateTi ...
- qwt的安装和移植-
目须要依据实时数据绘制出图表,因此我们找到了qwt库.这个库是一个绘制图表,曲线图,柱状图的统计图标. . .. 以下我们就具体解说一下这个库在Larm上的编译和移植 qwt介绍 QWT,全称是Qt ...
- win7 下 qwt安装教程
一.安装: qwt的安装很简单,可以参看它的install文档. 1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径 ...
最新文章
- Difference Between InnoDb and MyISAM(个人觉着是好文章,简单易懂,推荐看)
- git 切换分支
- Python argparse模块基本用法
- windows下如何启动redis
- java有any类型吗_Java开发网 - 一个关于CORBA中any类型的问题
- 4线电子围栏安装示意图_知识积累|周界防护-脉冲电子围栏的安装
- 学以致用二十二-----写一个基本环境设置的脚本
- SQL Server群集共享存储迁移
- eNSP检测不到网卡信息——WinPacp
- (转)SqlServer基础之(触发器)(清晰易懂)
- 深度学习(一)神经网络中的池化与反池化原理
- 基于深度强化学习的离散自动生产线智能调度
- Html5视频播放代码
- 计算机组成原理补码位算法,[计算机组成原理] Booth算法 —— 补码一位乘法
- cov matlab,方差var、协方差cov、协方差矩阵(浅谈)-(二)_函数var
- 发布镜像【DockerHub或阿里云】
- UMLChina公众号文章精选(20210706更新精选)
- 运维需要懂产品和运营吗?
- 计算机鼠标不动了,计算机鼠标不动了怎么解决?
- 推荐算法最前沿|CIKM2020推荐系统论文一览
热门文章
- CSharp与Python中的输入输出语句对比
- Django中 form表单的使用
- 计算机应用能力考试多少选择题,计算机应用能力考试选择题汇总.doc
- 北京交通大学计算机学院 于剑,北京交通大学计算机与信息技术学院博导介绍:于剑...
- 北京交通大学JAVA期末考试_JAVA考试题求助
- APICloud AVM框架开发消防检查助手APP
- winform 鼠标 静止时间_双飞燕飞时代FG30S鼠标评测,谁说静音手感不两全?
- python log壁纸_python生成单词壁纸
- 360浏览器抢票专版官方版
- spring boot网上商品定制系统 毕业设计-附源码180915