• Qwt-QwtPlot类详解


    1.概述

    QwtPlot类是Qwt库中最重要的类之一,它提供了一个容器来组织和绘制多个曲线、散点图、条形图、图像等。

    QwtPlot类具有以下主要功能:

    • 提供一个绘图窗口,可以在其中绘制简单或复杂的二维数据图。
    • 支持多种类型的图表,包括曲线图、柱状图、散点图等。
    • 能够自定义图表的外观,包括线条颜色、填充颜色、图例等。
    • 支持坐标轴的自定义,包括坐标轴标签、刻度间隔、刻度线风格等。
    • 提供交互式功能,如放大、缩小、拖动等。
    • 支持多个图层,可以在同一个绘图窗口中叠加绘制不同的图表。
    • 支持导出图表为图片文件。

    使用QwtPlot类,可以轻松地创建和管理绘图窗口,并将数据以图表的形式进行可视化展示。通过QwtPlot类提供的丰富功能,用户可以灵活地配置图表的样式和外观,以满足自己的需求。无论是简单的曲线图还是复杂的多图层图表,QwtPlot类都能提供强大的功能和易用的接口。

    2.常用接口介绍

    2.1设置标题

    void setTitle (const QString &)

    2.2设置绘图窗口的背景色

    void setCanvasBackground (const QBrush &)

    2.3插入一个图例,并指定其位置

    void insertLegend (QwtAbstractLegend *, LegendPosition=QwtPlot::RightLegend, double ratio=-1.0)

    2.4设置坐标轴的标题

    void setAxisTitle (QwtAxisId, const QString &)

    2.5设置坐标轴的刻度范围和步长

    void setAxisScale (QwtAxisId, double min, double max, double stepSize=0)

    2.6启用或禁用坐标轴自动缩放

    void setAxisAutoScale (QwtAxisId, bool on=true)

    2.7设置坐标轴的最大次刻度线数

    void setAxisMaxMinor (QwtAxisId, int maxMinor)

    2.8设置坐标轴的最大主刻度线数

    void setAxisMaxMajor (QwtAxisId, int maxMajor)

    2.9返回绘图窗口的布局管理器,可以通过该方法来访问和操作图表中的特定元素

    QwtPlotLayout * plotLayout ()

    2.10重新绘制绘图窗口,用于更新图表显示

    virtual void replot ()

    2.11返回图例

    QwtAbstractLegend * legend ()

    3.代码示例

    示例:创建两条简单的曲线。

    1. #include "mainwindow.h"
    2. #include "ui_mainwindow.h"
    3. #include "qwt_plot.h"
    4. #include "qwt_plot_curve.h"
    5. #include "qwt_text.h"
    6. #include "qwt_legend.h"
    7. MainWindow::MainWindow(QWidget *parent) :
    8. QMainWindow(parent),
    9. ui(new Ui::MainWindow)
    10. {
    11. ui->setupUi(this);
    12. QwtPlot *plot = new QwtPlot(QwtText("Two Curves"),this);
    13. //设置背景色
    14. plot->setCanvasBackground(QBrush(QColor(Qt::yellow)));
    15. //添加图例
    16. QwtLegend *legend = new QwtLegend();
    17. plot->insertLegend(legend);
    18. //设置坐标轴标题
    19. plot->setAxisTitle(QwtAxis::YLeft,QwtText("Y坐标轴"));
    20. plot->setAxisTitle(QwtAxis::XBottom,QwtText("X坐标轴"));
    21. plot->setAxisScale(QwtAxis::YLeft, 0, 10);//设置左Y轴范围
    22. // add curves1
    23. QwtPlotCurve *curve1 = new QwtPlotCurve( "Curve 1" );
    24. curve1->setRenderHint( QwtPlotItem::RenderAntialiased );
    25. curve1->setPen( Qt::red );
    26. curve1->setLegendAttribute( QwtPlotCurve::LegendShowLine );
    27. curve1->setYAxis( QwtAxis::YLeft );
    28. curve1->attach( plot );
    29. // add curves2
    30. QwtPlotCurve *curve2 = new QwtPlotCurve( "Curve 2" );
    31. curve2->setRenderHint( QwtPlotItem::RenderAntialiased );
    32. curve2->setPen( Qt::black );
    33. curve2->setLegendAttribute( QwtPlotCurve::LegendShowLine );
    34. curve2->setYAxis( QwtAxis::YRight );
    35. curve2->attach( plot );
    36. //设置数据
    37. QPolygonF points;
    38. points << QPointF( 0.0, 4.4 ) << QPointF( 1.0, 3.0 )
    39. << QPointF( 2.0, 4.5 ) << QPointF( 3.0, 6.8 )
    40. << QPointF( 4.0, 7.9 ) << QPointF( 5.0, 7.1 );
    41. curve1->setSamples(points);
    42. QPolygonF points2;
    43. points2 << QPointF( 0.0, 4.6 ) << QPointF( 1.0, 3.2 )
    44. << QPointF( 2.0, 4.7 ) << QPointF( 3.0, 7.0 )
    45. << QPointF( 4.0, 8.1 ) << QPointF( 5.0, 7.3 );
    46. curve2->setSamples(points2);
    47. // finally, refresh the plot
    48. plot->replot();
    49. ui->verticalLayout->addWidget(plot);
    50. }
    51. MainWindow::~MainWindow()
    52. {
    53. delete ui;
    54. }

    4.相关推荐

    Qwt QwtPlotCurve曲线类详解-CSDN博客

    Qwt QwtPlotMarker标记类详解-CSDN博客

  • 相关阅读:
    机器学习(二十七):批量机器学习算法训练选择与调优(进阶)
    MyBatis自定义映射resultMap,处理一对多,多对一
    源码解析系列:ConcurrentHashMap(1) - 构造方法和其他参数
    PostMan的学习
    自建or用SaaS|ToB企业如何玩转官网数字化改造
    第13期 | GPTSecurity周报
    会员通?会员通!
    【Linux系统管理】10 Shell 编程进阶篇
    绍兴市越城区人大常委会主任徐荻一行莅临迪捷软件调研指导
    关于pbootcms中被挂马以后的处理
  • 原文地址:https://blog.csdn.net/wzz953200463/article/details/134021697