基于QCustomPlot实现的Nyquist图、Nichols图
目录1.前言2.底图预览2.1Nyquist图2.2Nichols图3.附着标记点实现4.代码附录1.前言Nyquist奈奎斯特图、Nichols尼科尔斯图是两种频率分析图表与之相近的还有Bode图。由于其业务特性特性除开X-Y轴数据以外这两种图表有很多辅助内容需要去绘制比如M圆/等值线、N圆/等值线等这些内容本文统一称之为底图。底图的内容是固定的由纯粹的数学公式推导出而与实际X-Y数据无关。本文基于QCustomPlot、Qt、C代码绘制出了Nyquist、Nichols底图可以方便使用作为图表背景继而接入个人所需数据从而快速的实现两种图表效果。本文还附带提供了基于两种业务场景的标记点实现。2.底图预览2.1Nyquist图要素内容1XY轴实轴、虚轴2M圆蓝色圆3N圆粉色圆4单位圆绿色圆5零点-10极值点2.2Nichols图要素内容1M等值线、N等值线2临界点3周期特性。图表初始时绘制-720度至360度三个周期的Nichols底图该范围外的底图只有在可视时才会被创建3.附着标记点实现QCPCurveQCustomPlot中的一个曲线类通过输入一系列的散点实际点在界面上拟合、显示出一条曲线。实现了两个标记点两个业务需求1对于图表上的任意一条QCPCurve曲线仅存在一个凸显的标记点。该标记点对应曲线上实际点位置该标记点可以被鼠标拖动至不同位置。2对于图表上的任意一条QCPCurve曲线可以存在多个凸显的标记点。该标记点通过altleft mouse添加、删除该标记点对应曲线上实际点位置该标记点可以被鼠标拖动至不同位置。4.代码附录代码压缩包见文章开头有三类文件1nyquist_chart.h/cppnyquist底图的实现代码。2nichols_chart.h/cppnichols底图实现代码。3curve_data_marker.h/cpp标记点实现代码。备注以上代码需要引入QCustomPlot开源库需自行下载。