zoukankan      html  css  js  c++  java
  • 使用qwt作曲线图——有网格线背景的画法

    创建自己的QwtPlot

    (1)     增加一个类比如curvePlotWidget,继承自QwtPlot

    (2)代码示例

     1 curvePlotWidget::curvePlotWidget(QWidget *parent)
     2  : QwtPlot(parent)
     3 {
     4  ui.setupUi(this);
     5  
     6  
     7  
     8 //设置一些窗口熟悉
     9  setFrameStyle(QFrame::NoFrame);
    10  setLineWidth(0);
    11  setCanvasLineWidth(2);
    12  
    13  plotLayout()->setAlignCanvasToScales(true);
    14  
    15 //增加网格
    16  
    17  QwtPlotGrid *grid = new QwtPlotGrid;
    18  grid->setMajPen(QPen(Qt::gray, 0, Qt::DotLine));
    19  grid->attach(this);
    20  
    21 //设置画布背景
    22  
    23  setCanvasBackground(QColor(29, 100, 141)); // nice blue
    24  
    25 //设置X与Y坐标范围
    26  setAxisScale(xBottom, 1, 75);
    27  setAxisScale(yLeft, -1, 1);
    28  
    29 //
    30  
    31  
    32 //新建一个曲线对象
    33  QwtPlotCurve *pCurve=new QwtPlotCurve("curve1");
    34  
    35  
    36  
    37 //输入数据
    38  
    39  QVector< double > xData;
    40  
    41  QVector<double> yData;
    42  
    43  for(int i=0;i<75;++i)
    44   xData.push_back(i+1);
    45  
    46  yData<<1<<0.048634<<0.655211<<0.320122<<0.130912<<0.182503<<0.163217<<0.167857<<0.169706<<0.15244<<0.17136<<0.184516<<0.183185<<0.16788<<0.150819<<0.154223<<0.149134<<0.126398<<0.090325<<-0.017047<<0.184973<<0.113727<<0.072852<<0.054324<<0.04943<<0.036473<<0.042876<<0.048972<<0.04963<<0.052114<<0.056796<<0.060517<<0.07844<<0.066472<<0.079221<<0.06061<<-0.018855<<0.457584<<0.104125<<0.282665<<0.066127<<0.064099<<0.065944<<0.013025<<0.054401<<0.027663<<0.038911<<0.03153<<0.040123<<0.038832<<0.03919<<0.048258<<0.050396<<0.063897<<0.062202<<0.067778<<0.074743<<0.063545<<0.066624<<0.09162<<-0.022548<<0.037526<<0.04687<<0.04425<<0.046449<<0.038345<<0.051492<<0.033624<<0.030668<<0.075395<<-0.016367<<-0.039846<<0.021928<<0<<0;
    47  
    48  
    49  pCurve->setSamples(xData,yData);
    50  
    51  pCurve->attach(this);
    52  
    53 //设置曲线颜色
    54  QPen pen;
    55  pen.setColor(QColor(255,0,0));
    56  
    57  pCurve->setPen(pen);
    58  
    59  //QwtPlotCurve::PaintAttribute
    60  
    61 //抗锯齿
    62  
    63 pCurve->setRenderHint(QwtPlotItem::RenderAntialiased,true);
    64  
    65  
    66  
    67 //增加缩放功能
    68  
    69 QwtPlotZoomer  *pZoomer= new QwtPlotZoomer(canvas());
    70  
    71 pZoomer->setRubberBandPen(QPen(Qt::red));
    72  
    73 //重绘
    74  
    75 replot();
    76 }
    77  

    写下这些代码,就可以实现曲线绘制以及显示还有缩放功能,qwt还是挺强大的,所得界面如下图:

    转自:https://blog.csdn.net/u011731378/article/details/79148219

    https://blog.csdn.net/kupepoem/article/details/8235204

  • 相关阅读:
    几个概率题
    几个智力题。。
    [算法]各种二分查找
    深入 JavaScript 时间对象 Date
    Leaflet 调用百度瓦片地图服务
    JavaScript中进制和字符编码问题
    DOM事件流
    flex 弹性布局
    javascript 闭包内部机制
    HTML DOM setAttribute()、与createAttribute()
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/10928930.html
Copyright © 2011-2022 走看看