使用 Qwt 绘制半对数图

Posted

技术标签:

【中文标题】使用 Qwt 绘制半对数图【英文标题】:Plotting a semilog chart with Qwt 【发布时间】:2014-11-14 00:32:46 【问题描述】:

我想使用 Qwt 绘制一个半对数图。我不了解 Qwt,但我正在寻找一些示例来指导我的代码。问题是目前我找不到人。你能帮我写一个简单的代码吗?我想使用一个矩阵,我可以在其中获取 x 轴和 y 轴值并使用它们来创建绘图。谢谢!

【问题讨论】:

请澄清。您是想用对数刻度绘图还是像在 MathCad 中那样仅绘制矩阵 (2xN)? @Chernobyl 我更正它。希望有帮助:) 【参考方案1】:

试试这个:

QwtPlot *myPlot = new QwtPlot;
  QwtPlotCurve *curve1 = new QwtPlotCurve;
 
  QwtPointSeriesData* myData = new QwtPointSeriesData;
 
  QVector<QPointF>* samples = new QVector<QPointF>;
  samples->push_back(QPointF(1.0,1.0));
  samples->push_back(QPointF(2.0,2.0));
  samples->push_back(QPointF(3.0,3.0));
  samples->push_back(QPointF(4.0,5.0));
  myData->setSamples(*samples);
  curve1->setData(myData);
 
  curve1->attach(myPlot);

我在这里使用 QVector,但 qwtplotcurve 支持双数组和其他东西,但我喜欢使用容器。您可以选择最适合您的。 QPoint 包含 x 和 y 值。

Qwt 还提供对数刻度引擎:http://qwt.sourceforge.net/class_qwt_log_scale_engine.html

我应该说你的 Qwt 可能有问题,但是下一个代码在我的计算机上完美运行:

#include "mainwindow.h"
#include <QApplication>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>

int main(int argc, char *argv[])

      QApplication a(argc, argv);
      QwtPlot *myPlot = new QwtPlot;
      QwtPlotCurve *curve1 = new QwtPlotCurve;

      QwtPointSeriesData* myData = new QwtPointSeriesData;

      QVector<QPointF>* samples = new QVector<QPointF>;
      samples->push_back(QPointF(1.0,1.0));
      samples->push_back(QPointF(2.0,2.0));
      samples->push_back(QPointF(3.0,3.0));
      samples->push_back(QPointF(4.0,5.0));
      myData->setSamples(*samples);
      curve1->setData(myData);

      curve1->attach(myPlot);
      myPlot->show();
//    MainWindow w;
//    w.show();

    return a.exec();

【讨论】:

Em 我添加了#include 和#include 。然后我将你的代码复制到一个主函数中,我的程序意外地完成了。任何的想法?我的 IDE 使用 Qwt 进行了很好的配置。 @Chu 请看我的编辑,这段代码运行良好,不幸的是你的 Qt/Qwt 似乎有问题

以上是关于使用 Qwt 绘制半对数图的主要内容,如果未能解决你的问题,请参考以下文章

使用 QWT 和 FFTW 绘制频谱图

Qwt - 我们可以绘制面积图吗?

使用 QWT 和 Microsoft Visual C++ 2010 绘制 MatLab 等效图

Qwt 图没有重新绘制

MATLAB画图工具中坐标外面的底色是灰的,该如修改?

Qwt - 重新绘制不清除当前绘图