使用 QwtPlotCurve 断开第一个和最后一个点
Posted
技术标签:
【中文标题】使用 QwtPlotCurve 断开第一个和最后一个点【英文标题】:Disconnect first and last point with QwtPlotCurve 【发布时间】:2013-06-17 11:17:44 【问题描述】:感谢 Qwt 库,我在 Qt 中绘制曲线时遇到问题。
曲线画的很好,除了最后一个点和第一个点是连在一起的,QwtPlot其实是用我提供的数据画了一个多边形……
我查看了 QwtPlotCurve 设置和参数,但找不到任何可以解决此问题的相关内容。
感谢this thread(遗憾的是没有得到答复)的另一个提示是它与我提供的数据有关。
目前,我使用循环固定大小的缓冲区(std::array
)来存储我不断轮询的值。然后,我使用成员函数
setRawSamples(const double* xData, const double* yData, int size);
设置我的曲线数据(使用std::array::data()
获得的指针)。这意味着要绘制的点列表没有排序(即具有最小横坐标的点不是double*
中的第一个点)。
这可能是问题的根源吗?我怎样才能解决这个问题,只画一条曲线而不是一个多边形?
【问题讨论】:
【参考方案1】:默认情况下,曲线绘制为非闭合多边形。每个样本点都连接到提供的数组中的前一个样本点(但第一个样本未连接到最后一个样本)。 Qwt 不关心您的点按横坐标值排序。例如,如果您提供样本 (0, 0), (0, 1), (1, 1), (1, 0), (0, 0),它将绘制一个矩形。如果要避免曲线自相交,则需要提供按横坐标排序的样本。
【讨论】:
以上是关于使用 QwtPlotCurve 断开第一个和最后一个点的主要内容,如果未能解决你的问题,请参考以下文章