qwtplot:重新绘制时没有情节更新

Posted

技术标签:

【中文标题】qwtplot:重新绘制时没有情节更新【英文标题】:qwtplot: no plot update on replot 【发布时间】:2017-07-21 05:52:33 【问题描述】:

我使用基于 qwtplot 的绘图类,代码可以在这里查看: https://github.com/pospiech/code/tree/master/libdev/plot/plottools/trunk/src

此代码用于另一个应用程序,这里我创建 qwtplot 类(QMatrixPlot)并添加数据并调用 replot

    plot2DAmplitude->setMatrixData(QVector<double>::fromStdVector(dataAmplitude),
                        xaxis.size(),
                        QwtInterval(xaxis.front(), xaxis.back()),
                        QwtInterval(yaxis.front(), yaxis.back()));

    plot2DAmplitude->replot();

setMatrixData 是以下代码:

void setMatrixData(const QVector< double > &values, int numColumns, QwtInterval xAxisRange, QwtInterval yAxisRange)

    m_MatrixRasterData->setInterval( Qt::XAxis, xAxisRange );
    m_MatrixRasterData->setInterval( Qt::YAxis, yAxisRange );

    double minValue = *std::min_element( std::begin(values), std::end(values) );
    double maxValue = *std::max_element( std::begin(values), std::end(values) );
    m_MatrixRasterData->setInterval( Qt::ZAxis, QwtInterval(minValue, maxValue) );

    m_MatrixRasterData->setValueMatrix (values, numColumns);        
    d_spectrogram->setData( m_MatrixRasterData );

    const QwtInterval zInterval = d_spectrogram->data()->interval( Qt::ZAxis );
    setAxisScale( QwtPlot::yRight, zInterval.minValue(), zInterval.maxValue() );

    QwtScaleWidget *axis = axisWidget( QwtPlot::yRight );
    axis->setColorMap( zInterval, QColorMap::map(d_mapType) );

这有效 - 一次。 尽管调用了相同的代码,但使用不同数据的第二次调用什么也不做。只有当我放大和缩小数据时才会更新。

有什么想法吗? Qwt 是 6.1.3 版本。一旦我完成了一个最小的例子,我将更新这篇文章。

【问题讨论】:

这是另一个可能存在相同问题的示例:***.com/questions/34948704/qwt-plot-is-not-reploting/…。但是plot-&gt;setAutoReplot( true ); 并没有解决我的问题。问题是数据如果可用于绘图,它只是不会在 gui 中更新。 【参考方案1】:

QwtPlotRasterItem 缓存渲染的图像。在您的代码中,您正在更改项目背后的数据,因此项目不知道缓存无效。

使用 QwtPlotRasterItem::invalidateCache() 可以解决类似的问题。

【讨论】:

以上是关于qwtplot:重新绘制时没有情节更新的主要内容,如果未能解决你的问题,请参考以下文章

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

Qwt 重新缩放轴

Qwt 仅重新绘制特定区域

在 QwtPlot scaleDraw 中绘制向内刻度

PyQwt QwtPlot 慢

情节:如何用新数据更新/重绘情节表达图?