精华内容
下载资源
问答
  • Qt-Qcustomplot坐标轴缩放、拖动等调整

    万次阅读 2018-03-29 13:37:51
    Qcustomplot中可以设置坐标轴属性...//设置基本坐标轴(左侧Y轴和下方X轴)可拖动、可缩放、曲线可选、legend可选、设置伸缩比例,使所有图例可见 CustomPlot->setInteractions(QCP::iRangeDrag|QCP::iRange...

    Qcustomplot入门请点击: Qcustomplot入门教程
    Qcustomplot中可以设置坐标轴属性:
    1、 setInteractions函数

    //设置基本坐标轴(左侧Y轴和下方X轴)可拖动、可缩放、曲线可选、legend可选、设置伸缩比例,使所有图例可见
    CustomPlot->setInteractions(QCP::iRangeDrag|QCP::iRangeZoom| QCP::iSelectAxes |
                                      QCP::iSelectLegend | QCP::iSelectPlottables);

    QCP还有iMultiSelect等其他属性,读者可自行尝试
    这种方法只能设置基础坐标轴

    2、setRangeZoomAxes函数
    使坐标轴可以伸缩
    在2.0系列版本的Qcustomplot中,可以对通过坐标轴列表对两套坐标轴进行设置:

       QList<QCPAxis*> axes;
       axes << CustomPlot->yAxis2 << CustomPlot->xAxis2 << CustomPlot->yAxis << CustomPlot->xAxis;
       CustomPlot->axisRect()->setRangeZoomAxes(axes);

    但在1.0系列版本中只能设置一套,并且两套坐标轴都进行设置只能有一套坐标轴起作用:

    CustomPlot->axisRect()->setRangeZoomAxes(ui->widget->xAxis, ui->widget->yAxis);

    3、根据图像最高点最低点自动缩放坐标轴
    绘制实时数据时,需要每次数据绘制完成就调用此函数,否则不会生效(是根据当前点调整坐标)。

    //Y轴
    CustomPlot->graph(2)->rescaleValueAxis(true); 
    //X轴 
    CustomPlot->graph(2)->rescaleKeyAxis(true); 
    //X、Y轴 
    CustomPlot->graph(2)->rescaleAxes(true); 

    4、setRangeZoomFactor
    设置伸缩比例 setRangeZoomFactor( double horizontalFactor, double verticalFactor );可以分别设定X,Y方向

    Customplot->axisRect()->setRangeZoomFactor(1.2,2.2);/x方向为1.2

    5、重载鼠标滚轮事件和按钮事件
    这种方法相对来说比较麻烦,尝试了上面的方法后我放弃了使用这种方法,但这种方法的灵活性是以上方法无法比拟的

    其他Qcustomplot坐标轴属性可参考:
    https://www.cnblogs.com/swarmbees/p/6059812.html

    展开全文
  • QT与OpenGL之坐标轴缩放

    千次阅读 2012-12-11 14:08:07
    在我们使用OpenGL画点的时候,默认的中心是...缩放OpenGL的坐标轴,使得重新建立的坐标轴符合我们新的标准。 下面我们就用方法二来实现如何重建坐标轴: 重新建立坐标轴,我们需要利用正交视角,可以使用glortho

    在我们使用OpenGL画点的时候,默认的中心是在屏幕的中心,左右,上下,前后都是-1到1的区间,如果我们需要绘制大于这个区间的点怎么办呢?

    方法一:

    我们可以将所有的需要绘制的点转化到-1到1的区间。

    方法二:

    缩放OpenGL的坐标轴,使得重新建立的坐标轴符合我们新的标准。


    下面我们就用方法二来实现如何重建坐标轴:

    重新建立坐标轴,我们需要利用正交视角,可以使用glortho函数实现。

    void GLWidget::resizeGL(int width, int height)
    {
        GLfloat nRange = 100.0f;
        if(0 == height)
            height = 1;//防止一条边为0
        glViewport(0, 0, (GLint)width, (GLint)height);//重置当前视口,本身不是重置窗口的,只不过是这里被Qt给封装好了
    
    
        //glOrtho(left, right, bottom, top, near, far);
        if (width <= height)
            glOrtho(-nRange, nRange, -nRange*height/width, nRange*height/width, -nRange, nRange);
        else
            glOrtho(-nRange*width/height, nRange*width/height, -nRange, nRange, -nRange, nRange);
    
        glMatrixMode(GL_PROJECTION);//选择投影矩阵
        glLoadIdentity();//重置选择好的投影矩阵
       // gluPerspective(45.0, (GLfloat)width/(GLfloat)height, 0.1, 100.0);//建立透视投影矩阵
      //  glMatirxMode(GL_MODELVIEW);//以下2句和上面出现的解释一样
       // glLoadIdentity();
    
    }

    glOrtho函数总共六个参数,在上面代码注释了,分别代表了左,右,下,上,前,后,这是按照三维的标准设定的。


    在利用画线函数来实现坐标轴:

    glColor3f( 1.0f, 0.0f, 0.0f );//指定线的颜色,蓝色
    
               glBegin( GL_LINES );
               {
                   // x-axis
    
                   glVertex3f( -100.0f, 0.0f, 0.0f);
                   glVertex3f( 100.0f, 0.0f, 0.0f);
    
                   // x-axis arrow
    
                   glVertex3f( 100.0f, 0.0f, 0.0f);
                   glVertex3f( 93.0f, 3.0f, 0.0f);
                   glVertex3f( 100.0f, 0.0f, 0.0f);
                   glVertex3f( 93.0f,-3.0f, 0.0f);
    
                   // y-axis
    
                   glVertex3f( 0.0f, -100.0f, 0.0f);
                   glVertex3f( 0.0f, 100.0f, 0.0f);
    
                   // y-axis arrow
                   glVertex3f( 0.0f, 100.0f, 0.0f);
                   glVertex3f( 3.0f, 93.0f, 0.0f);
                   glVertex3f( 0.0f, 100.0f, 0.0f);
                   glVertex3f( -3.0f, 93.0f, 0.0f);
               }
               glEnd();

    此时的效果就是:



    此时,我们再来画一个在(50,20, 0)的点:


    展开全文
  • 在2.0系列版本的Qcustomplot中,可以对通过坐标轴列表对两套坐标轴进行设置: QList<QCPAxis*> axes; axes << CustomPlot->yAxis2 << CustomPlot->xAxis2 << CustomPlot->yAxis &...

    具体的实现方法 参考我上一篇文章:https://blog.csdn.net/weixin_39328406/article/details/112007876

    setRangeZoomAxes函数
    使坐标轴可以伸缩
    在2.0系列版本的Qcustomplot中,可以对通过坐标轴列表对两套坐标轴进行设置:

    QList<QCPAxis*> axes;
    axes << CustomPlot->yAxis2 << CustomPlot->xAxis2 << CustomPlot->yAxis << CustomPlot->xAxis;
    CustomPlot->axisRect()->setRangeZoomAxes(axes);

    但在1.0系列版本中只能设置一套,并且两套坐标轴都进行设置只能有一套坐标轴起作用:

    CustomPlot->axisRect()->setRangeZoomAxes(ui->widget->xAxis, ui->widget->yAxis);

    3、根据图像最高点最低点自动缩放坐标轴
    绘制实时数据时,需要每次数据绘制完成就调用此函数,否则不会生效(是根据当前点调整坐标)。

    //Y轴
    CustomPlot->graph(0)->rescaleValueAxis(true); 
    //X轴 
    CustomPlot->graph(0)->rescaleKeyAxis(true); 
    //X、Y轴 
    CustomPlot->graph(0)->rescaleAxes(true); 
    

    4、setRangeZoomFactor
    设置伸缩比例 setRangeZoomFactor( double horizontalFactor, double verticalFactor );可以分别设定X,Y方向

    Customplot->axisRect()->setRangeZoomFactor(1.2,2.2);/x方向为1.2

    展开全文
  • QWT 对坐标轴缩放拖动

    2019-12-10 16:50:07
    https://forum.qt.io/topic/54848/qwtplot-zooming-logarithmic-scale/2 zoscHello, i have a QwtPlot with a logarithmic scale on y and time scale on x. That was not the problem, but zooming into the graph....

    https://forum.qt.io/topic/54848/qwtplot-zooming-logarithmic-scale/2

    zoscHello,

    i have a QwtPlot with a logarithmic scale on y and time scale on x. That was not the problem, but zooming into the graph.
    I have three unwanted effects, but don’t know how to fix:

    when use wheel mouse to zoom in i can see on my y-axes only 1000 no other values.
    when i zoom out my y-axes goes down to 1E-100 ?
    when i use ctrl+LeftMouse to open the RubberBandPan to zoom from 400 to 1000 mbar, i see a lot of values of the y-axes
    from 440 to 1000 every 20 mbar.
    when i zoom into 1e-5 to 1e-6 dosen’t work, i see y-axes range from 0,01 to 1e-100 ?

    QwtLogScaleEngine* axesy = new QwtLogScaleEngine();
    ui->plot->setTitle("Plot");
    ui->plot->setAxisTitle(QwtPlot::yLeft,QString("Pressure [%1]").arg(QString("mbar")));
    ui->plot->setAxisTitle(QwtPlot::xBottom,QString("Time [%1]").arg(QString("s")));
    ui->plot->setAxisScaleEngine(QwtPlot::yLeft, axesy);
    ui->plot->setAxisMaxMajor( QwtPlot::yLeft, 100);
    ui->plot->setAxisMaxMinor( QwtPlot::yLeft, 10);
    ui->plot->setAxisScale(QwtPlot::yLeft,1e-10,2000);
    
    // Setting Magnifier
    QwtPlotMagnifier* zoom_x = new QwtPlotMagnifier(ui->plot->canvas());
    QwtPlotMagnifier* zoom_y = new QwtPlotMagnifier(ui->plot->canvas());
    // Shift+MouseWheel --> Magnifier x
    zoom_x->setWheelModifiers(Qt::ShiftModifier);
    zoom_x->setAxisEnabled(QwtPlot::xBottom, true);
    zoom_x->setAxisEnabled(QwtPlot::yLeft, false);
    // CTRL + MouseWheel --> Magnifier y
    zoom_y->setWheelModifiers(Qt::ControlModifier);
    zoom_y->setAxisEnabled(QwtPlot::xBottom,false);
    zoom_y->setAxisEnabled(QwtPlot::yLeft,true);
    
    // Left Button for panning
    QwtPlotPanner* panner = new QwtPlotPanner (ui->plot->canvas());
    panner->setMouseButton(Qt::LeftButton);
    
    //QwtPlotZoomer* zoomer = new QwtPlotZoomer( ui->plot->canvas() );
    QwtPlotZoomer* zoomer = new QwtPlotZoomer( QwtPlot::xBottom, QwtPlot::yLeft, ui->plot->canvas()  );
    zoomer->setRubberBandPen( QColor( Qt::black ) );
    zoomer->setTrackerPen( QColor( Qt::red ) );
    // CTRL+LeftButton for the zooming
    zoomer->setMousePattern( QwtEventPattern::MouseSelect1, Qt::LeftButton, Qt::ControlModifier);
    // CTRL+RightButton back to full size
    zoomer->setMousePattern( QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier);
    
    QwtPlotGrid *grid = new QwtPlotGrid();
    grid->enableY(true);
    grid->enableYMin(true);
    grid->setMajorPen( Qt::darkGray, 0, Qt::SolidLine );
    grid->setMinorPen( Qt::gray, 0 , Qt::DotLine );
    grid->attach(ui->plot);
    
    QwtLegend* legend = new QwtLegend;
    legend->setDefaultItemMode(QwtLegendData::Checkable);
    ui->plot->insertLegend(legend,QwtPlot::RightLegend);
    

    使用Qwt
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 使用qt的qchart显示数据曲线,坐标轴QValueAxis可以设置刻度间隔数量,但每个刻度的数值是根据坐标的极值除以间隔数量得到的,不一定是整数,导致曲线控件的显示刻度不适合观察。 如图: 纵坐标刻度带有小数,...
  • 默认的情况下,我们绘制的曲线是绘制在xAxis和yAxis上的,同时鼠标滚轮缩放...在1.0系列版本中 ,设置坐标轴缩放的函数只能一次设置一套坐标轴,如下: CustomPlot->axisRect()->setRangeZoomAxes(CustomPlo...
  • 世界坐标系原点在视图左上角,本例子通过世界坐标转换,将坐标原点定位在视图中央,Y轴向上,X轴向右,并绘制坐标轴,基于逻辑坐标系下的绘图,可将转换关系函数取消生效,对比世界坐标系下的绘图。 重写...
  • QtChart 启用缩放功能setRubberBand()之后,setRange(min, max)出现的问题 因项目需要,用qtchart绘制的图形需要框选放大,这里用到了setRubberBand()函数,但是在左键...复原的原理:记录初始时的坐标轴的range,...
  • 实现QtCharts曲线图移动和缩放(重新实现QChartView部分函数),主要功能如下: 1. 按住鼠标左键拖动曲线可移动曲线; 2. 滚动鼠标滚轮实现图形X方向的缩放; 3. 安装Ctrl,滚动鼠标滚轮实现图形Y方向的缩放; 4...
  • Qwt中对于某个缩放操作

    千次阅读 2016-01-16 00:02:29
    Qt中使用Qwt进行canvas的缩放操作是针对整个图形以及坐标轴缩放操作,如果要进行只对某个轴和图形的缩放思路是关联 zoomer的信号zoomed(QRectF),然后执行槽函数(记录当前坐标轴起点与终点的信息,然后将这个信息...
  • 1.基于x,y,z坐标轴。2.可设置原点,设置缩放比例。3.可设置y轴和z轴单位。4.三轴中,XY为2D图的水平、竖直方向;Z轴,对应高度图中的double型高度。5.引擎中心可设置。6.可设置引擎中心点,可以拽拖绕中心点旋转...
  • 实现QtCharts曲线图移动和缩放: 按住鼠标左键拖动曲线可移动曲线; 滚动鼠标滚轮实现图形X方向的缩放; 按住Ctrl,滚动鼠标滚轮实现图形Y方向的缩放; 按鼠标右键恢复图形初始状态; 缩放过程以鼠标当前位置为...
  • Qt5.14开发的手机APP中绘制的曲线,进行触摸操作,实现对曲线的缩放坐标轴平移,还需实现缩放和平移后的坐标复原。 二、实现过程 实现过程总体比较曲折,具体如下: 第一次:参考例子程序zoomlinechart,采用...
  • 文章目录坐标系统绘制矩形坐标变换平移 translate旋转 rotate缩放 scale扭曲 shear视口坐标和窗口坐标窗口坐标(逻辑坐标)视口(物理坐标)总结 坐标系统 Qt 学习之路 2(28):坐标系统 所谓坐标系统,也就是...
  • Qt魔方还原1

    2018-05-27 14:47:42
    Qt opengl 绘制3D魔方,并用鼠标控制整体的旋转与缩放 效果如下: 准备工作 学习Qt opengl绘制简单的立方体,并给立方体贴图Qt opengl教程 准备六个面图片素材 实施 1.新建Qt widget工程 这里是以Qt4...
  • QT实时数据显示上位机(realtime_data_plot),支持缩放,调整坐标轴刻度
  • Qt自定义折线图控件

    千次阅读 热门讨论 2018-10-15 11:34:43
    坐标轴的绘制 缩放 拖拽 数据点的查询 静态折线图 扩展应用 总结 demo下载 基础效果图 前言 使用Qt自定义折线图,可以自己控制折线图的重绘规则,究竟是每添加一个数据就刷新整个折线图,还是只刷新...
  • Qt(5.5.1)中,利用qwt(6.1.2)实现二维曲线的绘制,并且具有动态、实时显示,以及通过鼠标滚轮实现坐标轴以及曲线的缩放等功能(在几个同事电脑上都试过,编译全部通过)。
  • QT编写的数据转曲线工具

    千次阅读 2015-04-20 21:24:02
    今天公司安排个任务,要求将控制器上生成的16进制数据文本文件,导入到软件用图形显示,自动分布XY轴坐标,同时还要求可以鼠标拖动及缩放,首先想到就是用qcustomplot,最近刚好将qcustomplot都看了遍,所以基本上...
  • QT 打印的简单实现

    2012-08-01 19:36:05
    坐标轴的刻度尺,刻度对应的数字大小、位置,曲线缩放比例,每一个绘图点的绝对及相对坐标(绝对坐标零点是在纸的左上角,相对坐标零点是在坐标轴的左下角)……。在网上查阅了一些资料,在有些网友提供的代码里,...
  • qt 打印 刻度尺 曲线 复杂图像

    千次阅读 2016-07-04 10:30:42
    坐标轴的刻度尺,刻度对应的数字大小、位置,曲线缩放比例,每一个绘图点的绝对及相对坐标(绝对坐标零点是在纸的左上角,相对坐标零点是在坐标轴的左下角)……。在网上查阅了一些资料,在有些网友提供的代码里,...
  • Qt自定义控件--Chart 绘制折线图

    千次阅读 热门讨论 2019-03-28 16:16:52
    Qt自定义控件--Chart 绘制折线图 功能: 支持窗口大小缩放,比例不变 支持实时显示坐标值 ... 鼠标的坐标与XY坐标相互转换,移动鼠标实时显示xy数值大小 之前版本的样式: ...
  • 并且要绘制坐标轴,实现缩放等功能。  由于mfc我之前已经使用过,这次想尝试下新鲜的方法,再加上我是linux环境,最终就决定了使用Qt。  实现过程中发现最主要的难点是绘制坐标轴以及坐标转换,上网搜索发现qwt...

空空如也

空空如也

1 2 3
收藏数 43
精华内容 17
关键字:

qt坐标轴缩放